[josm] 01/07: Imported Upstream version 0.0.svn11826+dfsg

Bas Couwenberg sebastic at debian.org
Mon Apr 3 06:47:49 UTC 2017


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository josm.

commit d109609ab4e98f44d1536457f3fb13a14143cc8a
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Mon Apr 3 07:42:09 2017 +0200

    Imported Upstream version 0.0.svn11826+dfsg
---
 CONTRIBUTION                                       |    9 +
 README                                             |    5 +-
 REVISION                                           |   10 +-
 build.xml                                          |   38 +-
 data/defaultpresets.xml                            | 2374 +++--
 data/maps.xsd                                      | 1388 +--
 data/projection/ntf_r93_b.gsb                      |  Bin 277424 -> 0 bytes
 data/tagging-preset.xsd                            |  642 +-
 data/validator/combinations.mapcss                 |    9 +-
 data/validator/geometry.mapcss                     |   19 +-
 data/validator/numeric.mapcss                      |   18 +-
 data/validator/wikipedia.mapcss                    |  137 +-
 {data => data_nodist}/projection/BETA2007.gsb      |  Bin
 data_nodist/projection/CHENYX06_etrs.gsb           |  Bin 0 -> 3310656 bytes
 data_nodist/projection/CHENyx06-Distribution.pdf   |  Bin 0 -> 19312 bytes
 data_nodist/projection/josm-epsg                   |   10 +-
 data_nodist/projection/ntf_r93.gsb                 |  Bin 0 -> 277424 bytes
 data_nodist/projection/projection-reference-data   |   26 +-
 .../projection/projection-regression-test-data     |    4 +-
 data_nodist/trans/ast.lang                         |  Bin 8866 -> 8801 bytes
 data_nodist/trans/be.lang                          |  Bin 18529 -> 18388 bytes
 data_nodist/trans/bg.lang                          |  Bin 2429 -> 2433 bytes
 data_nodist/trans/ca-valencia.lang                 |  Bin 7809 -> 7813 bytes
 data_nodist/trans/ca.lang                          |  Bin 10528 -> 10474 bytes
 data_nodist/trans/cs.lang                          |  Bin 11298 -> 11585 bytes
 data_nodist/trans/da.lang                          |  Bin 10603 -> 10536 bytes
 data_nodist/trans/de.lang                          |  Bin 11937 -> 12238 bytes
 data_nodist/trans/el.lang                          |  Bin 1431 -> 1435 bytes
 data_nodist/trans/en.lang                          |  Bin 9743 -> 9957 bytes
 data_nodist/trans/en_AU.lang                       |  Bin 1516 -> 1520 bytes
 data_nodist/trans/en_GB.lang                       |  Bin 2108 -> 2112 bytes
 data_nodist/trans/es.lang                          |  Bin 12551 -> 12618 bytes
 data_nodist/trans/et.lang                          |  Bin 1408 -> 1412 bytes
 data_nodist/trans/fi.lang                          |  Bin 3029 -> 3033 bytes
 data_nodist/trans/fr.lang                          |  Bin 12280 -> 12219 bytes
 data_nodist/trans/gl.lang                          |  Bin 2979 -> 2983 bytes
 data_nodist/trans/hu.lang                          |  Bin 12590 -> 12512 bytes
 data_nodist/trans/id.lang                          |  Bin 6719 -> 6723 bytes
 data_nodist/trans/it.lang                          |  Bin 10418 -> 10357 bytes
 data_nodist/trans/ja.lang                          |  Bin 11734 -> 11661 bytes
 data_nodist/trans/km.lang                          |  Bin 16889 -> 16686 bytes
 data_nodist/trans/lt.lang                          |  Bin 2037 -> 2041 bytes
 data_nodist/trans/nb.lang                          |  Bin 1707 -> 1711 bytes
 data_nodist/trans/nl.lang                          |  Bin 12447 -> 12362 bytes
 data_nodist/trans/pl.lang                          |  Bin 2856 -> 2860 bytes
 data_nodist/trans/pt.lang                          |  Bin 13690 -> 13644 bytes
 data_nodist/trans/pt_BR.lang                       |  Bin 10175 -> 10116 bytes
 data_nodist/trans/ru.lang                          |  Bin 18583 -> 18731 bytes
 data_nodist/trans/sk.lang                          |  Bin 10557 -> 10489 bytes
 data_nodist/trans/sv.lang                          |  Bin 1330 -> 1334 bytes
 data_nodist/trans/uk.lang                          |  Bin 18940 -> 18807 bytes
 data_nodist/trans/vi.lang                          |  Bin 10755 -> 10676 bytes
 data_nodist/trans/zh_CN.lang                       |  Bin 7588 -> 7531 bytes
 data_nodist/trans/zh_TW.lang                       |  Bin 4839 -> 4921 bytes
 i18n/po/af.po                                      |  433 +-
 i18n/po/am.po                                      |  433 +-
 i18n/po/ar.po                                      |  433 +-
 i18n/po/ast.po                                     |  463 +-
 i18n/po/az.po                                      |  433 +-
 i18n/po/be.po                                      |  484 +-
 i18n/po/bg.po                                      |  433 +-
 i18n/po/bn.po                                      |  433 +-
 i18n/po/br.po                                      |  433 +-
 i18n/po/bs.po                                      |  433 +-
 i18n/po/ca.po                                      |  485 +-
 i18n/po/ca at valencia.po                             |  439 +-
 i18n/po/cs.po                                      | 1760 ++--
 i18n/po/cy.po                                      |  433 +-
 i18n/po/da.po                                      |  481 +-
 i18n/po/de.po                                      |  646 +-
 i18n/po/de_DE.po                                   |  433 +-
 i18n/po/el.po                                      |  435 +-
 i18n/po/en_AU.po                                   |  435 +-
 i18n/po/en_CA.po                                   |  433 +-
 i18n/po/en_GB.po                                   |  478 +-
 i18n/po/eo.po                                      |  433 +-
 i18n/po/es.po                                      |  698 +-
 i18n/po/et.po                                      |  433 +-
 i18n/po/eu.po                                      |  433 +-
 i18n/po/fa.po                                      |  433 +-
 i18n/po/fi.po                                      |  435 +-
 i18n/po/fil.po                                     |  433 +-
 i18n/po/fo.po                                      |  433 +-
 i18n/po/fr.po                                      |  473 +-
 i18n/po/ga.po                                      |  433 +-
 i18n/po/gl.po                                      |  433 +-
 i18n/po/he.po                                      |  433 +-
 i18n/po/hi.po                                      |  433 +-
 i18n/po/hr.po                                      |  433 +-
 i18n/po/ht.po                                      |  433 +-
 i18n/po/hu.po                                      |  484 +-
 i18n/po/hy.po                                      |  433 +-
 i18n/po/ia.po                                      |  433 +-
 i18n/po/id.po                                      |  437 +-
 i18n/po/is.po                                      |  433 +-
 i18n/po/it.po                                      |  513 +-
 i18n/po/ja.po                                      |  535 +-
 i18n/po/ka.po                                      |  433 +-
 i18n/po/km.po                                      |  436 +-
 i18n/po/ko.po                                      | 2696 +++---
 i18n/po/ku.po                                      |  433 +-
 i18n/po/ky.po                                      |  433 +-
 i18n/po/lb.po                                      |  433 +-
 i18n/po/lo.po                                      |  433 +-
 i18n/po/lt.po                                      |  501 +-
 i18n/po/lv.po                                      |  433 +-
 i18n/po/mk.po                                      |  433 +-
 i18n/po/mr.po                                      |  433 +-
 i18n/po/ms.po                                      |  433 +-
 i18n/po/nb.po                                      |  433 +-
 i18n/po/nds.po                                     |  433 +-
 i18n/po/nl.po                                      |  483 +-
 i18n/po/nn.po                                      |  433 +-
 i18n/po/oc.po                                      |  433 +-
 i18n/po/pa.po                                      |  433 +-
 i18n/po/pl.po                                      |  984 +-
 i18n/po/pt.po                                      |  481 +-
 i18n/po/pt_BR.po                                   |  574 +-
 i18n/po/rm.po                                      |  433 +-
 i18n/po/ro.po                                      |  433 +-
 i18n/po/ru.po                                      |  512 +-
 i18n/po/sk.po                                      |  481 +-
 i18n/po/sl.po                                      |  433 +-
 i18n/po/sq.po                                      |  433 +-
 i18n/po/sr.po                                      |  433 +-
 i18n/po/sv.po                                      |  435 +-
 i18n/po/ta.po                                      |  433 +-
 i18n/po/te.po                                      |  433 +-
 i18n/po/th.po                                      |  433 +-
 i18n/po/tr.po                                      |  433 +-
 i18n/po/ug.po                                      |  433 +-
 i18n/po/uk.po                                      |  614 +-
 i18n/po/ur.po                                      |  433 +-
 i18n/po/vi.po                                      |  461 +-
 i18n/po/wae.po                                     |  433 +-
 i18n/po/zh_CN.po                                   |  443 +-
 i18n/po/zh_TW.po                                   |  529 +-
 i18n/specialmessages.java                          |    5 +
 images/presets/shop/lottery.svg                    |  451 +-
 netbeans/nbproject/project.properties              |    2 +-
 scripts/SyncEditorLayerIndex.groovy                |   18 +-
 presets_lang.pl => scripts/presets_lang.pl         |   15 +-
 snapcraft.yaml                                     |   46 +
 src/org/openstreetmap/josm/Main.java               |   43 +-
 .../josm/actions/AbstractInfoAction.java           |    3 +-
 .../josm/actions/AddImageryLayerAction.java        |   10 +-
 .../josm/actions/AutoScaleAction.java              |   18 +-
 .../josm/actions/DialogsToggleAction.java          |    2 +-
 .../openstreetmap/josm/actions/DownloadAction.java |   48 +-
 .../josm/actions/DownloadNotesInViewAction.java    |    9 +
 .../josm/actions/DownloadOsmInViewAction.java      |    1 +
 .../josm/actions/ImageryAdjustAction.java          |   18 +-
 .../josm/actions/LassoModeAction.java              |    1 -
 .../josm/actions/MergeLayerAction.java             |   11 +-
 .../josm/actions/OverpassDownloadAction.java       |    1 +
 .../openstreetmap/josm/actions/RestartAction.java  |    3 +-
 .../josm/actions/SessionLoadAction.java            |   17 +-
 .../josm/actions/ShowStatusReportAction.java       |   29 +-
 .../openstreetmap/josm/actions/SplitWayAction.java |   16 +-
 .../ToggleUploadDiscouragedLayerAction.java        |   22 +-
 .../josm/actions/UpdateSelectionAction.java        |    2 +-
 .../openstreetmap/josm/actions/UploadAction.java   |    3 +-
 .../josm/actions/audio/AudioBackAction.java        |    3 +-
 .../josm/actions/audio/AudioFastSlowAction.java    |    3 +-
 .../josm/actions/audio/AudioFwdAction.java         |    3 +-
 .../josm/actions/audio/AudioPlayPauseAction.java   |    3 +-
 .../downloadtasks/AbstractDownloadTask.java        |   20 +
 .../actions/downloadtasks/DownloadGpsTask.java     |   17 +-
 .../actions/downloadtasks/DownloadNotesTask.java   |   14 +-
 .../downloadtasks/DownloadOsmChangeTask.java       |    3 +-
 .../actions/downloadtasks/DownloadOsmTask.java     |   61 +-
 .../josm/actions/mapmode/AddNoteAction.java        |   10 +-
 .../josm/actions/mapmode/DeleteAction.java         |    9 +-
 .../josm/actions/mapmode/DrawAction.java           |    7 +-
 .../josm/actions/mapmode/DrawSnapHelper.java       |    2 +-
 .../josm/actions/mapmode/ExtrudeAction.java        |    6 +-
 .../actions/mapmode/ImproveWayAccuracyAction.java  |    7 +-
 .../josm/actions/mapmode/MapMode.java              |   41 +-
 .../josm/actions/mapmode/ParallelWayAction.java    |    2 +-
 .../josm/actions/mapmode/PlayHeadDragMode.java     |    5 +-
 .../josm/actions/mapmode/SelectAction.java         |    1 -
 .../josm/actions/mapmode/ZoomAction.java           |    2 +-
 .../josm/command/SequenceCommand.java              |   12 +-
 src/org/openstreetmap/josm/data/AutosaveTask.java  |    2 +-
 src/org/openstreetmap/josm/data/Bounds.java        |    2 +-
 src/org/openstreetmap/josm/data/Preferences.java   |    3 +-
 .../openstreetmap/josm/data/ProjectionBounds.java  |   20 +
 .../josm/data/cache/JCSCacheManager.java           |    2 +-
 src/org/openstreetmap/josm/data/gpx/GpxData.java   |    4 +-
 .../data/imagery/GetCapabilitiesParseHelper.java   |    3 +-
 .../josm/data/imagery/ImageryInfo.java             |   18 +-
 .../josm/data/imagery/ImageryLayerInfo.java        |   47 +-
 .../josm/data/imagery/OffsetBookmark.java          |   52 +-
 .../josm/data/imagery/TMSCachedTileLoaderJob.java  |   16 +-
 .../josm/data/imagery/WMTSTileSource.java          |   95 +-
 src/org/openstreetmap/josm/data/notes/Note.java    |   66 +-
 .../openstreetmap/josm/data/notes/NoteComment.java |    8 +-
 .../josm/data/osm/AbstractPrimitive.java           |    2 +-
 src/org/openstreetmap/josm/data/osm/DataSet.java   |   73 +-
 .../josm/data/osm/DatasetConsistencyTest.java      |    3 +-
 src/org/openstreetmap/josm/data/osm/Node.java      |    2 +-
 src/org/openstreetmap/josm/data/osm/NoteData.java  |   45 +-
 .../josm/data/osm/OsmPrimitiveComparator.java      |   21 +
 .../josm/data/osm/RelationMember.java              |    2 +-
 src/org/openstreetmap/josm/data/osm/TagMap.java    |    6 +-
 .../josm/data/osm/event/DatasetEventManager.java   |    4 +-
 .../data/osm/visitor/paint/OffsetIterator.java     |  168 +
 .../visitor/paint/RenderBenchmarkCollector.java    |    2 +-
 .../data/osm/visitor/paint/StyledMapRenderer.java  |  798 +-
 .../visitor/paint/relations/MultipolygonCache.java |   51 +-
 .../josm/data/preferences/PreferencesWriter.java   |    8 +-
 .../josm/data/projection/CustomProjection.java     |    3 +-
 .../josm/data/projection/Ellipsoid.java            |    2 +-
 .../josm/data/projection/Projections.java          |   50 +-
 .../josm/data/projection/datum/NTV2Datum.java      |   28 +-
 .../data/projection/datum/NTV2GridShiftFile.java   |    2 +-
 .../projection/datum/NTV2GridShiftFileWrapper.java |   60 +-
 .../josm/data/projection/datum/NTV2SubGrid.java    |    2 +-
 .../data/projection/proj/SwissObliqueMercator.java |    2 +-
 .../josm/data/validation/OsmValidator.java         |    2 +-
 .../data/validation/routines/DomainValidator.java  |    2 +-
 .../data/validation/routines/RegexValidator.java   |    2 +-
 .../data/validation/routines/UrlValidator.java     |    2 +-
 .../josm/data/validation/routines/package.html     |   12 +-
 .../data/validation/tests/ConditionalKeys.java     |    6 +-
 .../data/validation/tests/DuplicateRelation.java   |    2 +-
 .../josm/data/validation/tests/Highways.java       |    6 +-
 .../data/validation/tests/MultipolygonTest.java    |   26 +-
 .../josm/data/validation/tests/PowerLines.java     |    4 +-
 .../data/validation/tests/RelationChecker.java     |    3 +-
 .../data/validation/tests/SimilarNamedWays.java    |    2 +-
 .../josm/data/validation/tests/TagChecker.java     |   20 +-
 src/org/openstreetmap/josm/gui/ExtendedDialog.java |    8 +-
 src/org/openstreetmap/josm/gui/ImageryMenu.java    |   10 +-
 .../josm/gui/JosmUserIdentityManager.java          |    5 +-
 .../openstreetmap/josm/gui/MainApplication.java    |   28 +-
 src/org/openstreetmap/josm/gui/MainFrame.java      |    6 +-
 src/org/openstreetmap/josm/gui/MainMenu.java       |    2 +-
 src/org/openstreetmap/josm/gui/MainPanel.java      |    2 +-
 src/org/openstreetmap/josm/gui/MapFrame.java       |   14 +-
 src/org/openstreetmap/josm/gui/MapMover.java       |    9 +-
 src/org/openstreetmap/josm/gui/MapStatus.java      |    2 +-
 src/org/openstreetmap/josm/gui/MapView.java        |   52 +-
 src/org/openstreetmap/josm/gui/MapViewState.java   |    5 +-
 src/org/openstreetmap/josm/gui/NoteSortDialog.java |   17 +-
 .../openstreetmap/josm/gui/PleaseWaitDialog.java   |   49 +-
 .../openstreetmap/josm/gui/PleaseWaitRunnable.java |    4 +-
 .../openstreetmap/josm/gui/ProgramArguments.java   |    6 +-
 .../gui/conflict/pair/AbstractListMergeModel.java  |   18 +-
 .../josm/gui/conflict/pair/ComparePairType.java    |    2 +-
 .../josm/gui/conflict/pair/tags/TagMerger.java     |    2 +-
 .../conflict/tags/CombinePrimitiveResolver.java    |   78 +
 .../tags/CombinePrimitiveResolverDialog.java       |  274 +-
 .../tags/PasteTagsConflictResolverDialog.java      |   31 +-
 .../gui/conflict/tags/TagConflictResolver.java     |    6 +-
 .../datatransfer/AbstractStackTransferHandler.java |    3 +-
 .../josm/gui/datatransfer/ClipboardUtils.java      |    2 +-
 .../josm/gui/datatransfer/OsmTransferHandler.java  |    2 +-
 .../gui/datatransfer/importers/OsmLinkPaster.java  |    4 +-
 .../importers/PrimitiveDataPaster.java             |    3 +-
 .../josm/gui/dialogs/ChangesetDialog.java          |    2 +-
 .../josm/gui/dialogs/DialogsPanel.java             |    3 +-
 .../josm/gui/dialogs/LatLonDialog.java             |   11 +-
 .../josm/gui/dialogs/NotesDialog.java              |    2 +-
 .../josm/gui/dialogs/OsmIdSelectionDialog.java     |    2 +-
 .../josm/gui/dialogs/SelectionListDialog.java      |    6 +-
 .../josm/gui/dialogs/UserListDialog.java           |    4 +-
 .../josm/gui/dialogs/ValidatorDialog.java          |    2 -
 .../dialogs/changeset/ChangesetCacheManager.java   |    4 +-
 .../dialogs/changeset/ChangesetContentPanel.java   |    3 +-
 .../dialogs/layer/LayerListTransferHandler.java    |   26 +-
 .../gui/dialogs/properties/PropertiesDialog.java   |    5 +-
 .../josm/gui/dialogs/properties/TagEditHelper.java |   28 +-
 .../gui/dialogs/relation/MemberTableModel.java     |   19 +-
 .../relation/actions/PasteMembersAction.java       |    4 +-
 .../gui/dialogs/relation/actions/SavingAction.java |    6 +-
 .../relation/sort/WayConnectionTypeCalculator.java |    3 +-
 .../josm/gui/download/DownloadDialog.java          |   22 +
 .../openstreetmap/josm/gui/draw/MapViewPath.java   |  182 +-
 .../josm/gui/draw/MapViewPositionAndRotation.java  |   49 +
 .../josm/gui/history/HistoryBrowserDialog.java     |   11 +-
 .../gui/history/HistoryBrowserDialogManager.java   |    3 +-
 .../josm/gui/history/HistoryBrowserModel.java      |  363 +-
 .../josm/gui/history/TagInfoTransferHandler.java   |    1 -
 .../josm/gui/history/TagTableCellRenderer.java     |    9 +-
 .../josm/gui/history/TagTableModel.java            |  146 +
 .../josm/gui/history/TwoColumnDiff.java            |    2 +-
 .../josm/gui/history/VersionTable.java             |   19 +-
 .../josm/gui/history/VersionTableModel.java        |  105 +
 .../openstreetmap/josm/gui/io/SaveLayerTask.java   |    3 +-
 .../josm/gui/io/UploadPrimitivesTask.java          |    6 +
 .../josm/gui/io/UploadSelectionDialog.java         |    2 +-
 .../josm/gui/layer/AbstractTileSourceLayer.java    |    5 -
 src/org/openstreetmap/josm/gui/layer/GpxLayer.java |    2 +-
 .../openstreetmap/josm/gui/layer/ImageryLayer.java |   19 +-
 .../openstreetmap/josm/gui/layer/LayerManager.java |   47 +-
 .../josm/gui/layer/MainLayerManager.java           |    4 +-
 .../josm/gui/layer/MapViewPaintable.java           |    2 +-
 .../openstreetmap/josm/gui/layer/OsmDataLayer.java |   37 +-
 .../openstreetmap/josm/gui/layer/WMTSLayer.java    |    3 +-
 .../gui/layer/geoimage/CorrelateGpxWithImages.java |    5 +-
 .../josm/gui/layer/geoimage/ImageEntry.java        |   60 +-
 .../josm/gui/layer/gpx/GpxDrawHelper.java          |   22 +-
 .../josm/gui/layer/gpx/ImportImagesAction.java     |    2 +-
 .../layer/imagery/TileSourceDisplaySettings.java   |    3 +-
 .../josm/gui/layer/markerlayer/AudioMarker.java    |    3 +-
 .../josm/gui/layer/markerlayer/PlayHeadMarker.java |    5 +-
 .../josm/gui/mappaint/ElemStyles.java              |   37 +-
 .../josm/gui/mappaint/MapPaintStyles.java          |    3 +
 .../josm/gui/mappaint/StyleCache.java              |   14 +
 .../openstreetmap/josm/gui/mappaint/StyleKeys.java |    4 +
 .../josm/gui/mappaint/mapcss/Condition.java        |    2 +-
 .../josm/gui/mappaint/mapcss/ConditionFactory.java |    5 +-
 .../gui/mappaint/mapcss/ExpressionFactory.java     |   52 +-
 .../josm/gui/mappaint/mapcss/MapCSSParser.jj       |    2 +-
 .../josm/gui/mappaint/mapcss/Selector.java         |    2 +-
 .../gui/mappaint/styleelement/AreaElement.java     |   58 +-
 .../gui/mappaint/styleelement/AreaIconElement.java |  103 +
 .../gui/mappaint/styleelement/BoxTextElement.java  |   59 +-
 .../gui/mappaint/styleelement/LineElement.java     |   34 +-
 .../gui/mappaint/styleelement/LineTextElement.java |    9 +-
 .../gui/mappaint/styleelement/NodeElement.java     |   80 +-
 .../mappaint/styleelement/RepeatImageElement.java  |    6 +-
 .../gui/mappaint/styleelement/TextElement.java     |   88 +
 .../josm/gui/mappaint/styleelement/TextLabel.java  |  102 +-
 .../placement/CompletelyInsideAreaStrategy.java    |   97 +
 .../styleelement/placement/OnLineStrategy.java     |  334 +
 .../placement/PartiallyInsideAreaStrategy.java     |   43 +
 .../placement/PositionForAreaStrategy.java         |   81 +
 .../styleelement/placement/package-info.java       |    6 +
 .../josm/gui/preferences/PreferenceTabbedPane.java |    4 +-
 .../josm/gui/preferences/ToolbarPreferences.java   |   42 +-
 .../gui/preferences/display/ColorPreference.java   |    2 -
 .../gui/preferences/display/LafPreference.java     |   11 +-
 .../gui/preferences/imagery/AddWMSLayerPanel.java  |    8 +-
 .../preferences/imagery/CommonSettingsPanel.java   |   42 +-
 .../gui/preferences/imagery/ImageryPreference.java |   19 +-
 .../gui/preferences/map/MapPaintPreference.java    |    2 +-
 .../gui/progress/PleaseWaitProgressMonitor.java    |   11 +-
 .../josm/gui/progress/ProgressMonitor.java         |    2 +-
 .../josm/gui/tagging/TagEditorModel.java           |    6 +-
 .../gui/tagging/TagTableColumnModelBuilder.java    |   10 +-
 .../josm/gui/tagging/ac/AutoCompletionManager.java |    7 +-
 .../gui/tagging/presets/TaggingPresetSelector.java |    8 +-
 .../tagging/presets/items/ComboMultiSelect.java    |    2 +-
 src/org/openstreetmap/josm/gui/util/GuiHelper.java |    2 +-
 .../openstreetmap/josm/gui/util/RotationAngle.java |  142 +-
 .../josm/gui/widgets/AutoAdjustingSplitPane.java   |   47 +
 .../josm/gui/widgets/JosmPasswordField.java        |    2 +-
 .../josm/gui/widgets/JosmTextField.java            |    5 +-
 .../josm/gui/widgets/ListPopupMenu.java            |    2 +-
 .../josm/gui/widgets/MultiSplitPane.java           |    2 +-
 .../josm/gui/widgets/QuadStateCheckBox.java        |    4 +-
 .../josm/io/BoundingBoxDownloader.java             |    3 +-
 src/org/openstreetmap/josm/io/GpxReader.java       |    2 +-
 .../josm/io/MultiFetchServerObjectReader.java      |   15 +-
 src/org/openstreetmap/josm/io/NameFinder.java      |    2 +-
 src/org/openstreetmap/josm/io/NmeaReader.java      |    2 +-
 src/org/openstreetmap/josm/io/OsmExporter.java     |   10 +-
 src/org/openstreetmap/josm/io/OsmReader.java       |    8 +-
 src/org/openstreetmap/josm/io/OsmWriter.java       |   11 +-
 .../josm/io/XmlStreamParsingException.java         |    7 +-
 .../openstreetmap/josm/io/imagery/WMSImagery.java  |    2 +-
 .../josm/io/remotecontrol/DNSName.java             |    3 +
 .../io/remotecontrol/handler/ImportHandler.java    |    2 +-
 .../remotecontrol/handler/LoadAndZoomHandler.java  |    2 +-
 .../josm/io/session/SessionReader.java             |    2 +-
 .../josm/io/session/SessionWriter.java             |   12 +-
 .../openstreetmap/josm/plugins/PluginHandler.java  |    8 +-
 src/org/openstreetmap/josm/tools/AudioPlayer.java  |   32 +-
 .../openstreetmap/josm/tools/ExceptionUtil.java    |    2 +
 src/org/openstreetmap/josm/tools/ExifReader.java   |  153 +-
 src/org/openstreetmap/josm/tools/Geometry.java     |    6 +-
 .../openstreetmap/josm/tools/ImageProvider.java    |    6 +-
 .../openstreetmap/josm/tools/OsmUrlToBounds.java   |    2 +-
 src/org/openstreetmap/josm/tools/PlatformHook.java |    8 +
 .../openstreetmap/josm/tools/PlatformHookOsx.java  |    6 +
 .../josm/tools/PlatformHookUnixoid.java            |    7 +-
 .../josm/tools/PlatformHookWindows.java            |    6 +
 .../josm/tools/RightAndLefthandTraffic.java        |    2 +-
 src/org/openstreetmap/josm/tools/Utils.java        |   25 +-
 .../openstreetmap/josm/tools/WindowGeometry.java   |    2 +-
 .../josm/tools/bugreport/BugReport.java            |    2 +-
 .../josm/tools/bugreport/BugReportDialog.java      |    2 +-
 .../josm/tools/bugreport/ReportedException.java    |   14 +-
 .../template_engine/ContextSwitchTemplate.java     |   26 +-
 test/data/regress/14209/7VWFOryj--.1.jpg           |  Bin 1633543 -> 670 bytes
 test/data/renderer/area-fill-color/data.osm        |  245 +
 test/data/renderer/area-fill-color/reference.png   |  Bin 0 -> 1725 bytes
 test/data/renderer/area-fill-color/style.mapcss    |   34 +
 test/data/renderer/area-fill-image/data.osm        |  245 +
 test/data/renderer/area-fill-image/reference.png   |  Bin 0 -> 6343 bytes
 test/data/renderer/area-fill-image/style.mapcss    |   34 +
 test/data/renderer/area-icon/data.osm              |  251 +
 test/data/renderer/area-icon/reference.png         |  Bin 0 -> 11000 bytes
 test/data/renderer/area-icon/style.mapcss          |   18 +
 test/data/renderer/area-text/data.osm              |  252 +
 test/data/renderer/area-text/reference.png         |  Bin 0 -> 4984 bytes
 test/data/renderer/area-text/style.mapcss          |   17 +
 test/data/renderer/node-shapes/reference.png       |  Bin 3765 -> 3867 bytes
 test/data/renderer/node-text/data.osm              |   82 +
 test/data/renderer/node-text/reference.png         |  Bin 0 -> 6743 bytes
 test/data/renderer/node-text/style.mapcss          |  142 +
 test/data/renderer/order/data.osm                  |  606 ++
 test/data/renderer/order/reference.png             |  Bin 0 -> 13111 bytes
 test/data/renderer/order/style.mapcss              |   83 +
 test/data/renderer/way-color/data.osm              |   88 +
 test/data/renderer/way-color/reference.png         |  Bin 0 -> 4549 bytes
 test/data/renderer/way-color/style.mapcss          |   30 +
 test/data/renderer/way-dashes/data.osm             |   88 +
 test/data/renderer/way-dashes/reference.png        |  Bin 0 -> 4526 bytes
 test/data/renderer/way-dashes/style.mapcss         |   36 +
 test/data/renderer/way-width/reference.png         |  Bin 2714 -> 3557 bytes
 .../josm/gui/mappaint/MapCSSRendererTest.java      |  308 +
 .../josm/gui/mappaint/StyleCacheTest.java          |   69 +-
 .../josm/actions/JoinAreasActionTest.java          |  123 +-
 .../josm/actions/mapmode/AddNoteActionTest.java    |    2 +-
 .../josm/actions/mapmode/DeleteActionTest.java     |    2 +-
 .../josm/actions/mapmode/ExtrudeActionTest.java    |    2 +-
 .../mapmode/ImproveWayAccuracyActionTest.java      |    2 +-
 .../josm/actions/mapmode/MapViewMock.java          |    2 +-
 .../josm/command/SequenceCommandTest.java          |   61 +
 .../josm/data/projection/ProjectionRefTest.java    |   58 +-
 .../josm/data/projection/SwissGridTest.java        |   48 +-
 .../data/validation/tests/DuplicateNodeTest.java   |    2 +-
 .../data/validation/tests/ValidatorTestUtils.java  |    2 +-
 .../gui/dialogs/InspectPrimitiveDialogTest.java    |    5 +-
 .../josm/gui/history/HistoryBrowserModelTest.java  |    2 -
 .../josm/gui/layer/gpx/GpxDrawHelperTest.java      |    4 +-
 .../josm/gui/mappaint/MapCSSRendererTest.java      |  199 -
 .../preferences/map/MapPaintPreferenceTestIT.java  |    5 +-
 .../AutoAdjustingSplitPaneTest.java}               |   11 +-
 .../josm/testutils/JOSMTestRules.java              |   18 +
 .../openstreetmap/josm/tools/ExifReaderTest.java   |   16 +
 tools/japicc/japi-compliance-checker.pl            | 9890 ++++++--------------
 tools/japicc/modules/Internals/APIDump.pm          | 1043 +++
 tools/japicc/modules/Internals/Basic.pm            |  282 +
 tools/japicc/modules/Internals/Css/Report.css      |  227 +
 tools/japicc/modules/Internals/Css/Tabs.css        |   34 +
 tools/japicc/modules/Internals/Descriptor.pm       |   94 +
 tools/japicc/modules/Internals/Filter.pm           |  309 +
 tools/japicc/modules/Internals/Input.pm            |   32 +
 tools/japicc/modules/Internals/Js/Sections.js      |   16 +
 tools/japicc/modules/Internals/Js/Tabs.js          |   64 +
 tools/japicc/modules/Internals/Logging.pm          |   90 +
 tools/japicc/modules/Internals/Mangling.pm         |  100 +
 tools/japicc/modules/Internals/Path.pm             |   81 +
 tools/japicc/modules/Internals/RegTests.pm         | 1591 ++++
 tools/japicc/modules/Internals/SysFiles.pm         |  225 +
 tools/japicc/modules/Internals/TypeAttr.pm         |   97 +
 tools/japicc/modules/Internals/Utils.pm            |  235 +
 tools/japicc/modules/RulesBin.xml                  | 1233 +++
 tools/japicc/modules/RulesSrc.xml                  | 1109 +++
 tools/pmd/designer.bat                             |    6 +
 tools/pmd/josm-ruleset.xml                         |   58 +
 455 files changed, 52893 insertions(+), 20328 deletions(-)

diff --git a/CONTRIBUTION b/CONTRIBUTION
index 1af4103..f21c0e2 100644
--- a/CONTRIBUTION
+++ b/CONTRIBUTION
@@ -70,6 +70,15 @@ The opening hour validation uses code from opening_hour.js
 (https://github.com/ypid/opening_hours.js) which is licensed
 with the New (2-clause) BSD license.
 
+------------------------------- PROJECTION DATA -------------------------------
+
+French NTF_R93 NTV2 grid: Source: IGN - Institut national de l'information
+                                        géographique et forestière
+
+German BETA2007 NTV2 grid: Source: BKG - Bundesamt für Kartographie und Geodäsie
+
+Swiss CHENYX06 NTV2 grid: Source: Swiss Federal Office of Topography
+
 ------------------------------------ ICONS ------------------------------------
 
 Most icons have been nicked from GNOME and the GIMP, both under GPL. 
diff --git a/README b/README
index ccf1514..e6d6caa 100644
--- a/README
+++ b/README
@@ -60,7 +60,6 @@ This is an overview of the files and directories in the JOSM code repository:
 - data/                     data files that will be included in the JOSM jar file
     - fonts/                font files used for map rendering
     - projection/           projection files
-      - *.gsb               NTv2 grid files for projection support
       - epsg                list of projection definitions
     - *.lang                translation data
     - *.xsd                 xml schema files for validation of configuration files
@@ -77,6 +76,8 @@ This is an overview of the files and directories in the JOSM code repository:
                             (see test/unit/org/openstreetmap/josm/data/osm/FilterTest.java)
     - Join_Areas_Tests.osm  some examples to test the 'join areas' feature
     - mapcss/               sample map styles and corresponding data files for regression testing
+    - projection/           projection files
+      - *.gsb               NTv2 grid files for projection support (see CONTRIBUTION)
     - projection-reference-data.csv
                             reference data for projection tests
                             (see test/unit/org/openstreetmap/josm/data/projection/ProjectionRefTest.java)
@@ -121,7 +122,7 @@ This is an overview of the files and directories in the JOSM code repository:
     - checkstyle/           libs and config files for checkstyle (automatically detects code style
                             problems in source code); can be launched as an ant target in build.xml
     - commons-cli-1.3.1.jar dependency of Groovy Ant task
-    - error_prone_ant-2.0.15.jar
+    - error_prone_ant-2.0.19.jar
                             used to detect code errors during compilation
     - findbugs/             libs and config files for findbugs (automatically detects common bugs and potential
                             problems in source code); can be launched as an ant target in build.xml
diff --git a/REVISION b/REVISION
index cf8860f..9ac6f88 100644
--- a/REVISION
+++ b/REVISION
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <info>
 <entry
+   revision="11826"
    kind="dir"
-   path="trunk"
-   revision="11639">
+   path="trunk">
 <url>https://josm.openstreetmap.de/svn/trunk</url>
 <relative-url>^/trunk</relative-url>
 <repository>
@@ -11,9 +11,9 @@
 <uuid>0c6e7542-c601-0410-84e7-c038aed88b3b</uuid>
 </repository>
 <commit
-   revision="11639">
-<author>stoecker</author>
-<date>2017-02-26T22:10:22.403379Z</date>
+   revision="11826">
+<author>bastiK</author>
+<date>2017-04-01T23:45:00.602997Z</date>
 </commit>
 </entry>
 </info>
diff --git a/build.xml b/build.xml
index d68849e..77d47ce 100644
--- a/build.xml
+++ b/build.xml
@@ -25,7 +25,7 @@
         <property name="proj-build.dir" location="${base.dir}/build2"/>
         <property name="epsg.output" location="${base.dir}/data/projection/custom-epsg"/>
         <property name="groovy.jar" location="${base.dir}/tools/groovy-all-2.4.8.jar"/>
-        <property name="error_prone_ant.jar" location="${base.dir}/tools/error_prone_ant-2.0.15.jar"/>
+        <property name="error_prone_ant.jar" location="${base.dir}/tools/error_prone_ant-2.0.19.jar"/>
         <property name="javac.compiler" value="com.google.errorprone.ErrorProneAntCompilerAdapter" />
         <!-- build parameter: compression level (ant -Dclevel=N)
                  N ranges from 0 (no compression) to 9 (maximum compression)
@@ -45,6 +45,11 @@
             <pathelement path="${groovy.jar}"/>
             <pathelement path="tools/findbugs/annotations.jar"/>
         </path>
+        <path id="pmd.classpath">
+            <fileset dir="${base.dir}/tools/pmd/">
+                <include name="*.jar"/>
+            </fileset>
+        </path>
     </target>
 
     <!--
@@ -207,17 +212,15 @@ Build-Date: ${build.tstamp}
     </target>
     <target name="javacc" depends="init" unless="javacc.notRequired">
         <mkdir dir="${mapcss.dir}/parsergen"/>
-        <exec append="false" executable="java" failifexecutionfails="true">
-            <arg value="-cp"/>
-            <arg value="${javacc.home}/javacc.jar"/>
-            <arg value="javacc"/>
+        <java classname="javacc" fork="true" failonerror="true">
+            <classpath path="${javacc.home}/javacc.jar"/>
             <arg value="-DEBUG_PARSER=false"/>
             <arg value="-DEBUG_TOKEN_MANAGER=false"/>
             <arg value="-JDK_VERSION=1.8"/>
             <arg value="-GRAMMAR_ENCODING=UTF-8"/>
             <arg value="-OUTPUT_DIRECTORY=${mapcss.dir}/parsergen"/>
             <arg value="${mapcss.dir}/MapCSSParser.jj"/>
-        </exec>
+        </java>
     </target>
     <target name="compile" depends="init,javacc">
         <!-- COTS -->
@@ -312,6 +315,9 @@ Build-Date: ${build.tstamp}
             <compilerarg value="-XDignore.symbol.file"/>
             <compilerarg value="-Xep:ReferenceEquality:OFF" compiler="com.google.errorprone.ErrorProneAntCompilerAdapter"/>
             <compilerarg value="-Xep:ImmutableEnumChecker:OFF" compiler="com.google.errorprone.ErrorProneAntCompilerAdapter"/>
+            <compilerarg value="-Xep:FutureReturnValueIgnored:OFF" compiler="com.google.errorprone.ErrorProneAntCompilerAdapter"/>
+            <compilerarg value="-Xep:FloatingPointLiteralPrecision:OFF" compiler="com.google.errorprone.ErrorProneAntCompilerAdapter"/>
+            <compilerarg value="-Xep:ShortCircuitBoolean:OFF" compiler="com.google.errorprone.ErrorProneAntCompilerAdapter"/>
             <compilerarg line="-Xmaxwarns 1000"/>
         </javac>
 
@@ -696,7 +702,7 @@ Build-Date: ${build.tstamp}
         <taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpath="${groovy.jar};tools/commons-cli-1.3.1.jar"/>
         <echo message="Checking editor imagery difference"/>
         <groovy src="scripts/SyncEditorLayerIndex.groovy" classpath="${dist.dir}/josm-custom.jar">
-                <!--<arg value="-nomissingeli"/>-->
+                <arg value="-noskip"/>
         </groovy>
     </target>
 
@@ -729,6 +735,7 @@ Build-Date: ${build.tstamp}
             <fileset dir="${base.dir}/src/org/openstreetmap/josm" includes="**/*.java"
                 excludes="gui/mappaint/mapcss/parsergen/*.java"/>
             <fileset dir="${base.dir}/test" includes="**/*.java"/>
+            <formatter type="plain"/>
             <formatter type="xml" toFile="checkstyle-josm.xml"/>
         </checkstyle>
     </target>
@@ -753,6 +760,23 @@ Build-Date: ${build.tstamp}
             <class location="${dist.dir}/josm-custom.jar" />
         </findbugs>
     </target>
+
+    <target name="pmd" depends="init-properties">
+        <taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpath="${toString:pmd.classpath}"/>
+        <pmd shortFilenames="true" encoding="UTF-8">
+            <sourceLanguage name="java" version="1.8" />
+            <ruleset>${base.dir}/tools/pmd/josm-ruleset.xml</ruleset>
+            <formatter type="text" toConsole="true" />
+            <formatter type="xml" toFile="pmd-josm.xml">
+                <param name="encoding" value="UTF-8" />
+            </formatter>
+            <fileset dir="${src.dir}">
+                <include name="org/openstreetmap/josm/**/*.java"/>
+                <exclude name="org/openstreetmap/josm/gui/mappaint/mapcss/parsergen/*.java" />
+            </fileset>
+        </pmd>
+    </target>
+
     <target name="run" depends="dist">
         <java jar="${dist.dir}/josm-custom.jar" fork="true">
             <arg value="--set=expert=true"/>
diff --git a/data/defaultpresets.xml b/data/defaultpresets.xml
index 0d66000..72162f4 100644
--- a/data/defaultpresets.xml
+++ b/data/defaultpresets.xml
@@ -287,12 +287,13 @@
     </chunk>
     <chunk id="power_generator">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:power=generator"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:power=generator"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=generator"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:power=generator"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:power=generator"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:power=generator"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:power=generator"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:power=generator"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:power=generator"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:power=generator" />
         <space />
         <key key="power" value="generator" />
@@ -396,17 +397,15 @@
     <group name="Streets" icon="presets/transport/way/way_secondary.svg">
         <item name="Motorway" icon="presets/transport/way/way_motorway.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=motorway"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=motorway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=motorway"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=motorway"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=motorway"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=motorway"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=motorway"
-                  ko.href="http://wiki.openstreetmap.org/wiki/Ko:Tag:highway=motorway"
-                  ms.href="http://wiki.openstreetmap.org/wiki/Ms:Tag:highway=motorway"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:highway=motorway"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=motorway"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=motorway"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=motorway"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=motorway"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:highway=motorway" />
             <space />
@@ -433,12 +432,13 @@
         </item> <!-- Motorway -->
         <item name="Motorway Link" icon="presets/transport/way/way_motorway_link.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=motorway_link"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=motorway_link"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=motorway_link"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=motorway_link"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=motorway_link"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=motorway_link"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=motorway_link"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=motorway_link"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=motorway_link"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=motorway_link"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:highway=motorway_link" />
             <key key="highway" value="motorway_link" />
@@ -462,15 +462,13 @@
         </item> <!-- Motorway Link -->
         <item name="Trunk" icon="presets/transport/way/way_trunk.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=trunk"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=trunk"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=trunk"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=trunk"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=trunk"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=trunk"
-                  ko.href="http://wiki.openstreetmap.org/wiki/Ko:Tag:highway=trunk"
-                  ms.href="http://wiki.openstreetmap.org/wiki/Ms:Tag:highway=trunk"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=trunk"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=trunk"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=trunk"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=trunk"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:highway=trunk"
                   vi.href="http://wiki.openstreetmap.org/wiki/Vi:Tag:highway=trunk" />
@@ -499,6 +497,8 @@
         </item> <!-- Trunk -->
         <item name="Trunk Link" icon="presets/transport/way/way_trunk_link.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Link_(highway)"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Highway_link"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Highway_link"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Highway_link" />
             <space />
             <key key="highway" value="trunk_link" />
@@ -525,14 +525,13 @@
         <separator/>
         <item name="Primary" icon="presets/transport/way/way_primary.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=primary"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=primary"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=primary"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=primary"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=primary"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=primary"
-                  ms.href="http://wiki.openstreetmap.org/wiki/Ms:Tag:highway=primary"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=primary"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=primary"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=primary"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=primary"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:highway=primary"
                   vi.href="http://wiki.openstreetmap.org/wiki/Vi:Tag:highway=primary" />
@@ -568,15 +567,14 @@
         </item> <!-- Primary Link -->
         <item name="Secondary" icon="presets/transport/way/way_secondary.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=secondary"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=secondary"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=secondary"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:highway=secondary"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=secondary"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=secondary"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=secondary"
-                  ms.href="http://wiki.openstreetmap.org/wiki/Ms:Tag:highway=secondary"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=secondary"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=secondary"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=secondary"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=secondary"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:highway=secondary"
                   vi.href="http://wiki.openstreetmap.org/wiki/Vi:Tag:highway=secondary" />
@@ -610,19 +608,19 @@
         </item> <!-- Secondary Link -->
         <item name="Tertiary" icon="presets/transport/way/way_tertiary.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=tertiary"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=tertiary"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:highway=tertiary"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=tertiary"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:highway=tertiary"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=tertiary"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=tertiary"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=tertiary"
-                  ms.href="http://wiki.openstreetmap.org/wiki/Ms:Tag:highway=tertiary"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=tertiary"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=tertiary"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=tertiary"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=tertiary"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:highway=tertiary"
-                  vi.href="http://wiki.openstreetmap.org/wiki/Vi:Tag:highway=tertiary" />
+                  vi.href="http://wiki.openstreetmap.org/wiki/Vi:Tag:highway=tertiary"
+                  zh_CN.href="http://wiki.openstreetmap.org/wiki/Zh-hans:Tag:highway=tertiary" />
             <space />
             <key key="highway" value="tertiary" />
             <text key="ref" text="Reference" />
@@ -652,16 +650,16 @@
         </item> <!-- Tertiary Link -->
         <item name="Unclassified" icon="presets/transport/way/way_unclassified.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=unclassified"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=unclassified"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=unclassified"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:highway=unclassified"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=unclassified"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=unclassified"
-                  ms.href="http://wiki.openstreetmap.org/wiki/Ms:Tag:highway=unclassified"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=unclassified"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=unclassified"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=unclassified"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=unclassified"
-                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:highway=unclassified" />
+                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:highway=unclassified"
+                  vi.href="http://wiki.openstreetmap.org/wiki/Vi:Tag:highway=unclassified" />
             <key key="highway" value="unclassified" />
             <optional>
                 <text key="name" text="Name" />
@@ -677,15 +675,14 @@
         </item> <!-- Unclassified -->
         <item name="Residential" icon="presets/transport/way/way_residential.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=residential"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=residential"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=residential"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=residential"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=residential"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=residential"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=residential"
-                  ms.href="http://wiki.openstreetmap.org/wiki/Ms:Tag:highway=residential"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=residential"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=residential"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=residential"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=residential"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:highway=residential"
                   vi.href="http://wiki.openstreetmap.org/wiki/Vi:Tag:highway=residential" />
@@ -703,7 +700,9 @@
         </item> <!-- Residential -->
         <item name="Bicycle Road" icon="presets/transport/way/way_bicycle_road.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:bicycle_road"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:bicycle_road"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:bicycle_road"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:bicycle_road"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:bicycle_road" />
             <space />
             <key key="bicycle_road" value="yes" />
@@ -727,11 +726,14 @@
         </item> <!-- Bicycle Road -->
         <item name="Living Street" icon="presets/transport/way/way_living_street.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=living_street"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=living_street"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=living_street"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=living_street"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=living_street"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=living_street"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=living_street"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=living_street"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=living_street"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=living_street"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=living_street"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:highway=living_street" />
             <space />
@@ -748,13 +750,14 @@
         </item> <!-- Living Street -->
         <item name="Pedestrian" icon="presets/transport/way/way_pedestrian.svg" type="way,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=pedestrian"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=pedestrian"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=pedestrian"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=pedestrian"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=pedestrian"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=pedestrian"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=pedestrian"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=pedestrian"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=pedestrian"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=pedestrian"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=pedestrian"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:highway=pedestrian" />
             <space />
@@ -772,13 +775,14 @@
         </item> <!-- Pedestrian -->
         <item name="Service" icon="presets/transport/way/way_service.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=service"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=service"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=service"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=service"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=service"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=service"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=service"
-                  ms.href="http://wiki.openstreetmap.org/wiki/Ms:Tag:highway=service"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=service"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=service"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=service"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=service"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:highway=service"
                   vi.href="http://wiki.openstreetmap.org/wiki/Vi:Tag:highway=service" />
@@ -795,12 +799,14 @@
         </item> <!-- Service -->
         <item name="Parking Aisle" icon="presets/transport/way/way_service_parking_aisle.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:service=parking_aisle"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:service=parking_aisle"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:service=parking_aisle"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:service=parking_aisle"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:service=parking_aisle"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:service=parking_aisle"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:service=parking_aisle"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:service=parking_aisle"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:service=parking_aisle"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:service=parking_aisle"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:service=parking_aisle" />
             <key key="highway" value="service" />
             <key key="service" value="parking_aisle" />
@@ -813,9 +819,11 @@
         </item> <!-- Parking Aisle -->
         <item name="Escape" icon="presets/transport/way/way_escape.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=escape"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=escape"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=escape"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=escape"
-                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=escape" />
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=escape"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=escape" />
             <space />
             <key key="highway" value="escape" />
             <label text="Emergency lane beside long descending slopes for trucks and other vehicles to stop safely after brake failure." />
@@ -827,11 +835,12 @@
         </item> <!-- Escape -->
         <item name="Raceway" icon="presets/sport/raceway.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=raceway"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=raceway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=raceway"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=raceway"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=raceway"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=raceway"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=raceway"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=raceway"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=raceway" />
             <space />
             <key key="highway" value="raceway" />
@@ -840,11 +849,12 @@
         <item name="Road (Unknown Type)" icon="presets/transport/way/way_road.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=road"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=road"
+                  da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:highway=road"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=road"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=road"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=road"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=road"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=road"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=road"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=road"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:highway=road" />
             <key key="highway" value="road" />
@@ -858,12 +868,13 @@
         </item> <!-- Road (Unknown Type) -->
         <item name="Construction" icon="presets/transport/way/way_construction.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:construction"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:construction"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:construction"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:construction"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Key:construction"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:construction"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:construction"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Key:construction"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Key:construction"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:construction" />
             <key key="highway" value="construction" />
             <combo key="construction" text="Highway type" values="motorway,motorway_link,trunk,trunk_link,primary,primary_link,secondary,secondary_link,tertiary,tertiary_link,unclassified,residential,service,bus_guideway,bridleway,living_street,pedestrian,track,path,footway,cycleway,steps" values_context="Highway" />
@@ -886,7 +897,7 @@
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Key:access"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:access"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:access"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Key:access"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Key:access"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:access"
                   sv.href="http://wiki.openstreetmap.org/wiki/Sv:Key:access"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Key:access" />
@@ -933,14 +944,14 @@
         <separator/>
         <item name="Roundabout" icon="presets/vehicle/restriction/roundabout_right.svg" type="node,way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:junction=roundabout"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:junction=roundabout"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:junction=roundabout"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:junction=roundabout"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:junction=roundabout"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:junction=roundabout"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:junction=roundabout"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:junction=roundabout"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:junction=roundabout"
-                  ro.href="http://wiki.openstreetmap.org/wiki/Ro:Tag:junction=roundabout"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:junction=roundabout"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:junction=roundabout"
                   sv.href="http://wiki.openstreetmap.org/wiki/Sv:Tag:junction=roundabout" />
             <space />
@@ -956,7 +967,9 @@
         </item> <!-- Roundabout -->
         <item name="Ford" icon="presets/vehicle/ford.svg" type="node,way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:ford"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:ford"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:ford"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Key:ford"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:ford"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Key:ford"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:ford"
@@ -972,6 +985,7 @@
     <group name="Ways" icon="presets/transport/way/way_unclassified.svg">
         <item name="Track" icon="presets/transport/way/track.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=track"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=track"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:highway=track"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=track"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=track"
@@ -980,9 +994,8 @@
                   id.href="http://wiki.openstreetmap.org/wiki/Id:Tag:highway=track"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=track"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=track"
-                  ko.href="http://wiki.openstreetmap.org/wiki/Ko:Tag:highway=track"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=track"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=track"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=track"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=track"
                   sv.href="http://wiki.openstreetmap.org/wiki/Sv:Tag:highway=track"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:highway=track" />
@@ -1010,6 +1023,7 @@
         </item> <!-- Track -->
         <item name="Path" icon="presets/transport/way/path.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=path"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=path"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=path"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=path"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=path"
@@ -1017,7 +1031,7 @@
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=path"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:highway=path"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=path"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=path"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=path"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=path"
                   sv.href="http://wiki.openstreetmap.org/wiki/Sv:Tag:highway=path"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:highway=path" />
@@ -1048,10 +1062,13 @@
         <separator/>
         <item name="Dedicated Bridleway" icon="presets/transport/way/dedicated_bridleway.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=bridleway"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=bridleway"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:highway=bridleway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=bridleway"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=bridleway"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=bridleway"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=bridleway"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=bridleway"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=bridleway"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=bridleway"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:highway=bridleway" />
             <key key="highway" value="bridleway" />
@@ -1065,14 +1082,14 @@
         <item name="Cycle Lane/Track" icon="presets/transport/way/cycle_lane_track.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Bicycle"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Bicycle"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Bicycle"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Bicycle"
-                  hr.href="http://wiki.openstreetmap.org/wiki/Hr:Bicycle"
                   hu.href="http://wiki.openstreetmap.org/wiki/Hu:Bicycle"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Bicycle"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Bicycle"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Bicycle"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Bicycle"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Bicycle"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Bicycle"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Bicycle"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Bicycle" />
             <space />
@@ -1088,12 +1105,13 @@
         </item> <!-- Cycle Lane/Track -->
         <item name="Dedicated Cycleway" icon="presets/transport/way/dedicated_cycleway.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=cycleway"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=cycleway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=cycleway"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=cycleway"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=cycleway"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=cycleway"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=cycleway"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=cycleway"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=cycleway"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=cycleway"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:highway=cycleway" />
             <key key="highway" value="cycleway" />
@@ -1137,13 +1155,14 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=footway"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=footway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=footway"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=footway"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:highway=footway"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=footway"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=footway"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=footway"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:highway=footway"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=footway"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=footway"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=footway"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=footway"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:highway=footway" />
             <key key="highway" value="footway" />
@@ -1159,13 +1178,15 @@
         </item> <!-- Dedicated Footway -->
         <item name="Steps" icon="presets/transport/way/steps.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=steps"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=steps"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=steps"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=steps"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:highway=steps"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=steps"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=steps"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=steps"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=steps"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=steps"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=steps"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=steps"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:highway=steps" />
             <key key="highway" value="steps" />
@@ -1202,10 +1223,11 @@
     <group name="Waypoints" icon="presets/vehicle/waypoints.svg">
         <item name="Motorway Junction" icon="presets/vehicle/motorway_junction.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=motorway_junction"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=motorway_junction"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=motorway_junction"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=motorway_junction"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=motorway_junction"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=motorway_junction"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=motorway_junction"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=motorway_junction"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:highway=motorway_junction" />
             <space />
@@ -1215,11 +1237,12 @@
         </item> <!-- Motorway Junction -->
         <item name="Services" icon="presets/vehicle/services.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=services"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=services"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=services"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=services"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=services"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=services"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=services"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=services"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=services" />
             <key key="highway" value="services" />
             <optional>
@@ -1230,12 +1253,13 @@
         </item> <!-- Services -->
         <item name="Rest Area" icon="presets/vehicle/rest_area.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=rest_area"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=rest_area"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=rest_area"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=rest_area"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=rest_area"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=rest_area"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=rest_area"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=rest_area"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=rest_area"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=rest_area"
                   sv.href="http://wiki.openstreetmap.org/wiki/Sv:Tag:highway=rest_area" />
             <key key="highway" value="rest_area" />
@@ -1248,11 +1272,13 @@
         <separator/>
         <item name="Traffic Signal" icon="presets/vehicle/traffic_signals.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=traffic_signals"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=traffic_signals"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=traffic_signals"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=traffic_signals"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=traffic_signals"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=traffic_signals"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=traffic_signals"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=traffic_signals"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=traffic_signals"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=traffic_signals" />
             <key key="highway" value="traffic_signals" />
             <optional text="Optional crossing attributes:">
@@ -1270,29 +1296,35 @@
             </item> <!-- Traffic Signal -->
         <item name="Stop" icon="presets/vehicle/restriction/stop.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=stop"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=stop"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=stop"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=stop"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=stop"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=stop"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=stop"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=stop"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=stop" />
             <key key="highway" value="stop" />
         </item> <!-- Stop -->
         <item name="Give Way" icon="presets/vehicle/restriction/give_way.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=give_way"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=give_way"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=give_way"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=give_way"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=give_way"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=give_way"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=give_way"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=give_way"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=give_way" />
             <key key="highway" value="give_way" />
         </item> <!-- Give Way -->
         <item name="Mini-Roundabout" icon="presets/vehicle/restriction/mini_roundabout_left.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=mini_roundabout"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=mini_roundabout"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=mini_roundabout"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=mini_roundabout"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=mini_roundabout"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=mini_roundabout"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=mini_roundabout"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=mini_roundabout"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=mini_roundabout"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=mini_roundabout" />
             <key key="highway" value="mini_roundabout" />
             <space />
@@ -1307,8 +1339,9 @@
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:crossing"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Key:crossing"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:crossing"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Key:crossing"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:crossing" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Key:crossing"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:crossing"
+                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Key:crossing" />
             <space />
             <key key="highway" value="crossing" />
             <combo key="crossing" text="Pedestrian crossing type" >
@@ -1329,17 +1362,17 @@
         <group name="Traffic Calming" icon="presets/vehicle/choker.svg"> 
             <item name="Bump" icon="presets/vehicle/bump.svg" type="node,way" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Key:traffic_calming"
-                      cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:traffic_calming"
-                      de.href="http://wiki.openstreetmap.org/wiki/DE:Key:traffic_calming"
-                      es.href="http://wiki.openstreetmap.org/wiki/ES:Key:traffic_calming"
-                      fi.href="http://wiki.openstreetmap.org/wiki/Fi:Key:traffic_calming"
-                      fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:traffic_calming"
-                      it.href="http://wiki.openstreetmap.org/wiki/IT:Key:traffic_calming"
-                      ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:traffic_calming"
-                      pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:traffic_calming"
-                      pt.href="http://wiki.openstreetmap.org/wiki/Pt:Key:traffic_calming"
-                      pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Key:traffic_calming"
-                      ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:traffic_calming" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:traffic_calming"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Key:traffic_calming"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Key:traffic_calming"
+                  fi.href="http://wiki.openstreetmap.org/wiki/Fi:Key:traffic_calming"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:traffic_calming"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Key:traffic_calming"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:traffic_calming"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:traffic_calming"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Key:traffic_calming"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:traffic_calming"
+                  zh_TW.href="http://wiki.openstreetmap.org/wiki/Zh-hant:Key:traffic_calming" />
                 <space />
                 <key key="traffic_calming" value="bump" />
             </item> <!-- Bump -->
@@ -1458,30 +1491,37 @@
         </group> <!-- Traffic Calming -->
         <item name="Passing Place" icon="presets/vehicle/passing_place.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=passing_place"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=passing_place"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=passing_place"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=passing_place"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=passing_place"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=passing_place"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=passing_place" />
             <key key="highway" value="passing_place" />
         </item> <!-- Passing Place -->
         <item name="Turning Circle" icon="presets/vehicle/turning_circle.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=turning_circle"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=turning_circle"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=turning_circle"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=turning_circle"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=turning_circle"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=turning_circle"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=turning_circle"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=turning_circle"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=turning_circle" />
             <key key="highway" value="turning_circle" />
         </item> <!-- Turning Circle -->
         <item name="Turning Loop" icon="presets/vehicle/turning_loop.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=turning_loop"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=turning_loop"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=turning_loop"
-                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=turning_loop" />
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=turning_loop"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=turning_loop" />
             <key key="highway" value="turning_loop" />
         </item> <!-- Turning Loop -->
         <item name="City Limit Sign" icon="presets/vehicle/restriction/city_limit.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:traffic_sign"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:traffic_sign"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:traffic_sign"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Key:traffic_sign"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Key:traffic_sign"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:traffic_sign"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:traffic_sign"
@@ -1506,12 +1546,13 @@
         </item> <!-- Speed Limit -->
         <item name="Speed Camera" icon="presets/vehicle/restriction/speed_camera.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=speed_camera"
-                  az.href="http://wiki.openstreetmap.org/wiki/Az:Tag:highway=speed_camera"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=speed_camera"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=speed_camera"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:highway=speed_camera"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=speed_camera"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=speed_camera"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=speed_camera"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=speed_camera"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=speed_camera"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=speed_camera" />
             <key key="highway" value="speed_camera" />
             <optional>
@@ -1520,12 +1561,16 @@
         </item> <!-- Speed Camera -->
         <item name="Traffic Mirror" icon="presets/vehicle/traffic_mirror.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=traffic_mirror"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=traffic_mirror" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=traffic_mirror"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=traffic_mirror"
+                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:highway=traffic_mirror" />
             <key key="highway" value="traffic_mirror" />
         </item> <!-- Traffic Mirror -->
         <item name="Highway milestone" icon="presets/vehicle/milestone.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=milestone"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=milestone"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=milestone"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=milestone"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=milestone"
                   zh_TW.href="http://wiki.openstreetmap.org/wiki/Zh-hant:Tag:highway=milestone" />
             <key key="highway" value="milestone" />
@@ -1542,6 +1587,7 @@
         <separator/>
         <item name="Elevator" icon="presets/service/elevator.svg" type="node,way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=elevator"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=elevator"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=elevator"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=elevator"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=elevator"
@@ -1551,9 +1597,11 @@
         <separator/>
         <item name="Grit Bin" icon="presets/misc/grit_bin.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=grit_bin"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=grit_bin"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=grit_bin"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=grit_bin"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=grit_bin" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=grit_bin"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=grit_bin" />
             <key key="amenity" value="grit_bin" />
         </item> <!-- Grit Bin -->
         <separator/>
@@ -1561,10 +1609,11 @@
             <link href="http://wiki.openstreetmap.org/wiki/Key:mountain_pass"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:mountain_pass"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:mountain_pass"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Key:mountain_pass"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:mountain_pass"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Key:mountain_pass"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:mountain_pass"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Key:mountain_pass" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Key:mountain_pass" />
             <key key="mountain_pass" value="yes" />
             <optional>
                 <text key="name" text="Name" />
@@ -1576,7 +1625,11 @@
     <group name="Barriers" icon="presets/barrier/wall.svg"> <!-- *** Node Barriers *** -->
         <item name="Block" icon="presets/barrier/block.svg" type="node,way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=block"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=block"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=block"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:barrier=block"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:barrier=block"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=block"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=block"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:barrier=block" />
             <key key="barrier" value="block" />
@@ -1588,7 +1641,9 @@
         </item> <!-- Block -->
         <item name="Bollard" icon="presets/barrier/bollard.svg" type="node,way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=bollard"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=bollard"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=bollard"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:barrier=bollard"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:barrier=bollard"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=bollard"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:barrier=bollard"
@@ -1605,8 +1660,10 @@
         </item> <!-- Bollard -->
         <item name="Cycle Barrier" icon="presets/barrier/cycle_barrier.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=cycle_barrier"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=cycle_barrier"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=cycle_barrier"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:barrier=cycle_barrier"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=cycle_barrier"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=cycle_barrier" />
             <key key="barrier" value="cycle_barrier" />
             <reference ref="barrier_4" />
@@ -1614,41 +1671,35 @@
         </item> <!-- Cycle Barrier -->
         <item name="Cattle Grid" icon="presets/barrier/cattle_grid.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=cattle_grid"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=cattle_grid"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=cattle_grid"
-                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=cattle_grid" />
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=cattle_grid"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=cattle_grid"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:barrier=cattle_grid" />
             <key key="barrier" value="cattle_grid" />
             <reference ref="barrier_4" />
         </item> <!-- Cattle Grid -->
         <item name="Bus Trap" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=bus_trap"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=bus_trap"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=bus_trap" />
             <key key="barrier" value="bus_trap" />
             <reference ref="optional_maxwidth" />
         </item> <!-- Bus Trap -->
         <item name="Spikes" icon="presets/barrier/spikes.svg" type="node" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Key:barrier"
-                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:barrier"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Key:barrier"
-                  es.href="http://wiki.openstreetmap.org/wiki/ES:Key:barrier"
-                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:barrier"
-                  hu.href="http://wiki.openstreetmap.org/wiki/Hu:Key:barrier"
-                  it.href="http://wiki.openstreetmap.org/wiki/IT:Key:barrier"
-                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:barrier"
-                  nl.href="http://wiki.openstreetmap.org/wiki/NL:Key:barrier"
-                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:barrier"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Key:barrier"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:barrier"
-                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Key:barrier" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=spikes"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=spikes" />
             <key key="barrier" value="spikes" />
             <reference ref="barrier_5" />
         </item> <!-- Spikes -->
         <item name="Toll Booth" icon="presets/barrier/toll_station.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=toll_booth"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=toll_booth"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=toll_booth"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:barrier=toll_booth"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=toll_booth"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=toll_booth"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:barrier=toll_booth"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:barrier=toll_booth"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:barrier=toll_booth"
                   zh_CN.href="http://wiki.openstreetmap.org/wiki/Zh-hans:Tag:barrier=toll_booth" />
             <key key="barrier" value="toll_booth" />
@@ -1658,19 +1709,23 @@
             </optional>
         </item> <!-- Toll Booth -->
         <item name="Border Control" icon="presets/barrier/douane.svg" type="node" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=border_control" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=border_control"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=border_control"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:barrier=border_control" />
             <key key="barrier" value="border_control" />
             <reference ref="barrier_5" />
         </item> <!-- Border Control -->
         <separator/> <!-- *** Linear Barriers *** -->
         <item name="Hedge" icon="presets/barrier/hedge.svg" type="way,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=hedge"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=hedge"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=hedge"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:barrier=hedge"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:barrier=hedge"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=hedge"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:barrier=hedge"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=hedge"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:barrier=hedge"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:barrier=hedge"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:barrier=hedge" />
             <key key="barrier" value="hedge" />
             <optional>
@@ -1683,12 +1738,14 @@
         </item> <!-- Hedge -->
         <item name="Fence" icon="presets/barrier/fence.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=fence"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=fence"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=fence"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:barrier=fence"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:barrier=fence"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=fence"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:barrier=fence"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=fence"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:barrier=fence"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:barrier=fence"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:barrier=fence" />
             <key key="barrier" value="fence" />
             <optional>
@@ -1698,6 +1755,8 @@
         </item> <!-- Fence -->
         <item name="Guard Rail" icon="presets/barrier/guard_rail.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=guard_rail"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=guard_rail"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:barrier=guard_rail"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=guard_rail"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=guard_rail" />
             <key key="barrier" value="guard_rail" />
@@ -1705,11 +1764,13 @@
         </item> <!-- Guard Rail -->
         <item name="Wall" icon="presets/barrier/wall.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=wall"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=wall"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=wall"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:barrier=wall"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:barrier=wall"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=wall"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=wall"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:barrier=wall"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:barrier=wall"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:barrier=wall"
                   zh_CN.href="http://wiki.openstreetmap.org/wiki/Zh-hans:Tag:barrier=wall" />
             <key key="barrier" value="wall" />
@@ -1718,39 +1779,46 @@
         </item> <!-- Wall -->
         <item name="City Wall" icon="presets/barrier/city_wall.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=city_wall"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=city_wall"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=city_wall"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:barrier=city_wall"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=city_wall"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=city_wall"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:barrier=city_wall"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:barrier=city_wall"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:barrier=city_wall" />
             <key key="barrier" value="city_wall" />
             <reference ref="optional_height" />
         </item> <!-- City Wall -->
         <item name="Retaining Wall" icon="presets/barrier/retaining_wall.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=retaining_wall"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=retaining_wall"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=retaining_wall"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:barrier=retaining_wall"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:barrier=retaining_wall"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:barrier=retaining_wall"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=retaining_wall"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=retaining_wall"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:barrier=retaining_wall"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:barrier=retaining_wall"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:barrier=retaining_wall"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:barrier=retaining_wall" />
             <key key="barrier" value="retaining_wall" />
             <reference ref="optional_height" />
         </item> <!-- Retaining Wall -->
         <item name="Jersey Barrier" icon="presets/barrier/jersey_barrier.svg"  type="node,way,closedway" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=jersey_barrier" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=jersey_barrier"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=jersey_barrier"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:barrier=jersey_barrier" />
             <key key="barrier" value="jersey_barrier" />
             <combo key="material" text="Material" values="concrete,plastic" />
         </item> <!-- Jersey Barrier -->
         <item name="Ditch" name_context="Barrier" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=ditch"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=ditch"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=ditch"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:barrier=ditch"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=ditch"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=ditch"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:barrier=ditch"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:barrier=ditch"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:barrier=ditch" />
             <key key="barrier" value="ditch" />
             <optional>
@@ -1759,6 +1827,9 @@
         </item> <!-- Ditch -->
         <item name="Kerb" icon="presets/barrier/kerb.svg" type="node,way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=kerb"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=kerb"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:barrier=kerb"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=kerb"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=kerb"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:barrier=kerb" />
             <key key="barrier" value="kerb" />
@@ -1769,6 +1840,8 @@
         <separator/> <!-- *** Access *** -->
         <item name="Entrance (Barrier Opening)" icon="presets/barrier/entrance.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=entrance"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=entrance"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:barrier=entrance"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=entrance"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=entrance"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:barrier=entrance" />
@@ -1778,11 +1851,13 @@
         </item> <!-- Entrance (Barrier Opening) -->
         <item name="Gate" icon="presets/barrier/gate.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=gate"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=gate"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=gate"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:barrier=gate"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:barrier=gate"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=gate"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=gate"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:barrier=gate"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:barrier=gate"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:barrier=gate" />
             <key key="barrier" value="gate" />
             <reference ref="barrier_5" />
@@ -1791,10 +1866,13 @@
         </item> <!-- Gate -->
         <item name="Lift Gate" icon="presets/barrier/lift_gate.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=lift_gate"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=lift_gate"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=lift_gate"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:barrier=lift_gate"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:barrier=lift_gate"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=lift_gate"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=lift_gate"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:barrier=lift_gate"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:barrier=lift_gate"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:barrier=lift_gate" />
             <key key="barrier" value="lift_gate" />
             <reference ref="barrier_5" />
@@ -1802,7 +1880,9 @@
             <reference ref="general_access" />
         </item> <!-- Lift Gate -->
         <item name="Swing Gate" icon="presets/barrier/swing_gate.svg" type="node" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=swing_gate" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=swing_gate"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=swing_gate"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:barrier=swing_gate" />
             <key key="barrier" value="swing_gate" />
             <combo key="swing_gate:type" text="Type" values="single,double" values_context="swing_gate" />
             <reference ref="barrier_5" />
@@ -1810,53 +1890,42 @@
             <reference ref="general_access" />
         </item> <!-- Swing Gate -->
         <item name="Hampshire Gate" type="node" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Key:barrier"
-                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:barrier"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Key:barrier"
-                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:barrier"
-                  hu.href="http://wiki.openstreetmap.org/wiki/Hu:Key:barrier"
-                  it.href="http://wiki.openstreetmap.org/wiki/IT:Key:barrier"
-                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:barrier"
-                  nl.href="http://wiki.openstreetmap.org/wiki/NL:Key:barrier"
-                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:barrier"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Key:barrier"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:barrier" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=hampshire_gate"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=hampshire_gate" />
             <key key="barrier" value="hampshire_gate" />
             <reference ref="barrier_5" />
             <reference ref="optional_maxwidth" />
         </item> <!-- Hampshire Gate -->
         <item name="Bump Gate" type="node" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Key:barrier"
-                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:barrier"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Key:barrier"
-                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:barrier"
-                  hu.href="http://wiki.openstreetmap.org/wiki/Hu:Key:barrier"
-                  it.href="http://wiki.openstreetmap.org/wiki/IT:Key:barrier"
-                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:barrier"
-                  nl.href="http://wiki.openstreetmap.org/wiki/NL:Key:barrier"
-                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:barrier"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Key:barrier"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:barrier" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=bump_gate"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=bump_gate" />
             <key key="barrier" value="bump_gate" />
             <reference ref="barrier_5" />
             <reference ref="optional_maxwidth" />
         </item> <!-- Bump Gate -->
         <item name="Kissing Gate" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=kissing_gate"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=kissing_gate" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=kissing_gate"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=kissing_gate"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=kissing_gate" />
             <key key="barrier" value="kissing_gate" />
             <reference ref="barrier_2" />
             <reference ref="optional_maxwidth" />
         </item> <!-- Kissing Gate -->
         <item name="Chain" icon="presets/barrier/chain.svg" type="node,way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=chain"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=chain"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:barrier=chain"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=chain"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=chain" />
             <key key="barrier" value="chain" />
             <reference ref="barrier_5" />
             <reference ref="optional_maxwidth" />
         </item> <!-- Chain -->
         <item name="Stile" icon="presets/barrier/stile.svg" type="node" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=stile" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=stile"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=stile"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=stile" />
             <space />
             <key key="barrier" value="stile" />
             <combo key="stile" text="Type" values="ladder,squeezer,stepover" />
@@ -1867,6 +1936,8 @@
         </item> <!-- Stile -->
         <item name="Turnstile" icon="presets/barrier/turnstile.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=turnstile"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=turnstile"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=turnstile"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=turnstile"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:barrier=turnstile" />
             <key key="barrier" value="turnstile" />
@@ -1874,7 +1945,9 @@
         </item> <!-- Turnstile -->
         <item name="Sally Port" icon="presets/barrier/sally_port.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=sally_port"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:barrier=sally_port"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=sally_port"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=sally_port"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:barrier=sally_port" />
             <key key="barrier" value="sally_port" />
             <reference ref="barrier_5" />
@@ -1886,12 +1959,13 @@
             <link href="http://wiki.openstreetmap.org/wiki/Key:tunnel"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:tunnel"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:tunnel"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Key:tunnel"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Key:tunnel"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:tunnel"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Key:tunnel"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:tunnel"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:tunnel"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Key:tunnel"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Key:tunnel"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:tunnel"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Key:tunnel" />
             <key key="tunnel" value="yes" />
@@ -1995,7 +2069,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:waterway=drain"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:waterway=drain"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:waterway=drain"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:waterway=drain"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:waterway=drain"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:waterway=drain" />
             <space />
             <key key="waterway" value="drain" />
@@ -2008,10 +2082,13 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=ditch"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:waterway=ditch"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:waterway=ditch"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:waterway=ditch"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:waterway=ditch"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:waterway=ditch"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:waterway=ditch"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:waterway=ditch"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:waterway=ditch" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:waterway=ditch"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:waterway=ditch" />
             <space />
             <key key="waterway" value="ditch" />
             <optional>
@@ -2023,13 +2100,13 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=stream"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:waterway=stream"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:waterway=stream"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:waterway=stream"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:waterway=stream"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:waterway=stream"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:waterway=stream"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:waterway=stream"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:waterway=stream"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:waterway=stream"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:waterway=stream"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:waterway=stream" />
             <space />
             <key key="waterway" value="stream" />
@@ -2049,7 +2126,6 @@
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:waterway=river"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:waterway=river"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:waterway=river"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:waterway=river"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:waterway=river" />
             <space />
             <key key="waterway" value="river" />
@@ -2067,7 +2143,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:waterway=canal"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:waterway=canal"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:waterway=canal"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:waterway=canal"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:waterway=canal"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:waterway=canal" />
             <space />
             <key key="waterway" value="canal" />
@@ -2086,10 +2162,12 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=spring"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=spring"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=spring"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=spring"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:natural=spring"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:natural=spring"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=spring"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:natural=spring"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=spring"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:natural=spring"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=spring" />
             <label text="A point where groundwater naturally flows to the surface of the earth from underground." />
             <space />
@@ -2102,7 +2180,8 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:waterway=waterfall"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:waterway=waterfall"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:waterway=waterfall"
-                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:waterway=waterfall" />
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:waterway=waterfall"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:waterway=waterfall" />
             <space />
             <key key="waterway" value="waterfall" />
             <reference ref="name_wikipedia" />
@@ -2112,10 +2191,11 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=weir"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:waterway=weir"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:waterway=weir"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:waterway=weir"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:waterway=weir"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:waterway=weir"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:waterway=weir"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:waterway=weir"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:waterway=weir"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:waterway=weir" />
             <space />
             <key key="waterway" value="weir" />
@@ -2125,10 +2205,11 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=dam"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:waterway=dam"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:waterway=dam"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:waterway=dam"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:waterway=dam"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:waterway=dam"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:waterway=dam"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:waterway=dam"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:waterway=dam"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:waterway=dam" />
             <space />
             <key key="waterway" value="dam" />
@@ -2139,7 +2220,7 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=groyne"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=groyne"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=groyne"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=groyne" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=groyne" />
             <key key="man_made" value="groyne" />
         </item> <!-- Groyne -->
         <item name="Breakwater" icon="presets/nautical/breakwater.svg" type="way,closedway,multipolygon" preset_name_label="true">
@@ -2147,7 +2228,7 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=breakwater"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=breakwater"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=breakwater"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=breakwater"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=breakwater"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=breakwater" />
             <space />
             <key key="man_made" value="breakwater" />
@@ -2159,6 +2240,7 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tunnel=culvert"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tunnel=culvert"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tunnel=culvert"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:tunnel=culvert"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:tunnel=culvert"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:tunnel=culvert"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:tunnel=culvert"
@@ -2177,7 +2259,7 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=basin"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:landuse=basin"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=basin"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=basin"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=basin"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=basin" />
             <space />
             <key key="landuse" value="basin" />
@@ -2188,8 +2270,9 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=reservoir"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=reservoir"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=reservoir"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:landuse=reservoir"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=reservoir"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=reservoir"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=reservoir"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=reservoir" />
             <space />
             <key key="landuse" value="reservoir" />
@@ -2200,8 +2283,10 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=reservoir_covered"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=reservoir_covered"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=reservoir_covered"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:man_made=reservoir_covered"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=reservoir_covered"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=reservoir_covered"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:man_made=reservoir_covered"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=reservoir_covered"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=reservoir_covered" />
             <space />
             <key key="man_made" value="reservoir_covered" />
@@ -2215,7 +2300,8 @@
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=water"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:natural=water"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=water"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:natural=water"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=water"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:natural=water"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=water"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:natural=water" />
             <label text="A body of standing water, such as a lake or pond." />
@@ -2233,10 +2319,10 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=coastline"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=coastline"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=coastline"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=coastline"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:natural=coastline"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=coastline"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:natural=coastline"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:natural=coastline"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=coastline" />
             <label text="Line between the sea and land (with the water on the right side of the way)." />
             <space />
@@ -2252,7 +2338,6 @@
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:waterway=riverbank"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:waterway=riverbank"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:waterway=riverbank"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:waterway=riverbank"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:waterway=riverbank"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:waterway=riverbank" />
             <space />
@@ -2266,13 +2351,13 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=wetland"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=wetland"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=wetland"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=wetland"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:natural=wetland"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:natural=wetland"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:natural=wetland"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=wetland"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=wetland"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:natural=wetland"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:natural=wetland"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=wetland" />
             <label text="Waterlogged area, either permanently or seasonally with vegetation." />
             <space />
@@ -2286,7 +2371,10 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=mud"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=mud"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=mud"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:natural=mud" />
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=mud"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=mud"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:natural=mud"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=mud" />
             <label text="Large area covered with mud." />
             <space />
             <key key="natural" value="mud" />
@@ -2298,7 +2386,8 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=beach"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=beach"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=beach"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:natural=beach"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=beach"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:natural=beach"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=beach" />
             <label text="A flat area of sand, gravel or pebble next to water." />
             <space />
@@ -2316,9 +2405,10 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=bay"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=bay"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=bay"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=bay"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=bay"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=bay"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:natural=bay"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:natural=bay"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=bay" />
             <label text="A large body of water partially enclosed by land but with a wide mouth." />
             <space />
@@ -2329,11 +2419,12 @@
     <group name="Shipping" icon="presets/nautical/ferry.svg">
         <item name="Ferry Terminal" icon="presets/nautical/ferry.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=ferry_terminal"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=ferry_terminal"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=ferry_terminal"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=ferry_terminal"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=ferry_terminal"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=ferry_terminal"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=ferry_terminal"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=ferry_terminal"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=ferry_terminal" />
             <space />
             <key key="amenity" value="ferry_terminal" />
@@ -2342,9 +2433,11 @@
         </item> <!-- Ferry Terminal -->
         <item name="Ferry Route" icon="presets/nautical/ferry.svg" type="way,closedway,relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:route=ferry"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:route=ferry"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:route=ferry"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:route=ferry"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:route=ferry"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:route=ferry"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:route=ferry"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:route=ferry" />
             <key key="route" value="ferry" />
             <optional>
@@ -2354,12 +2447,13 @@
         <separator/>
         <item name="Marina" icon="presets/nautical/marina.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=marina"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=marina"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=marina"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=marina"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:leisure=marina"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=marina"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=marina"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=marina"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:leisure=marina"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:leisure=marina" />
             <space />
             <key key="leisure" value="marina" />
@@ -2367,7 +2461,11 @@
             <combo key="sanitary_dump_station" text="Dump Station" values="yes,public,customers,no" />
         </item> <!-- Marina -->
         <item name="Marine Fuel" icon="presets/nautical/marine_fuel.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=fuel"/>
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=fuel"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:waterway=fuel"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:waterway=fuel"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:waterway=fuel"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:waterway=fuel"/>
             <space />
             <key key="waterway" value="fuel" />
             <optional>
@@ -2400,7 +2498,7 @@
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:man_made=pier"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:man_made=pier"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=pier"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=pier"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=pier"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=pier"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:man_made=pier" />
             <space />
@@ -2416,24 +2514,29 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:waterway=lock_gate"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:waterway=lock_gate"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:waterway=lock_gate"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:waterway=lock_gate"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:waterway=lock_gate"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:waterway=lock_gate" />
             <key key="waterway" value="lock_gate" />
         </item> <!-- Lock Gate -->
         <item name="Turning Point" icon="presets/nautical/turning.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=turning_point"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:waterway=turning_point"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:waterway=turning_point" />
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:waterway=turning_point"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:waterway=turning_point"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:waterway=turning_point"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:waterway=turning_point" />
             <key key="waterway" value="turning_point" />
         </item> <!-- Turning Point -->
         <separator/>
         <item name="Slipway" icon="presets/nautical/slipway.svg" type="node,way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=slipway"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=slipway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=slipway"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:leisure=slipway"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:leisure=slipway"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=slipway"
-                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=slipway"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:leisure=slipway" />
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=slipway"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=slipway" />
             <key key="leisure" value="slipway" />
             <optional>
                 <text key="name" text="Name" />
@@ -2444,8 +2547,9 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:waterway=boatyard"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:waterway=boatyard"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:waterway=boatyard"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:waterway=boatyard"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:waterway=boatyard"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:waterway=boatyard"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:waterway=boatyard"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:waterway=boatyard" />
             <space />
             <key key="waterway" value="boatyard" />
@@ -2457,7 +2561,8 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:waterway=dock"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:waterway=dock"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:waterway=dock"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:waterway=dock"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:waterway=dock"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:waterway=dock"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:waterway=dock" />
             <space />
             <key key="waterway" value="dock" />
@@ -2469,11 +2574,12 @@
     <group name="Railway" icon="presets/transport/railway/rail.svg">
         <item name="Rail" icon="presets/transport/railway/rail.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=rail"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:railway=rail"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=rail"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:railway=rail"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=rail"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:railway=rail"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:railway=rail"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:railway=rail"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:railway=rail"
                   sv.href="http://wiki.openstreetmap.org/wiki/Sv:Tag:railway=rail"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:railway=rail" />
@@ -2484,7 +2590,13 @@
             </optional>
         </item> <!-- Rail -->
         <item name="Narrow Gauge Rail" icon="presets/transport/railway/narrow_gauge_rail.svg" type="way" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:narrow_gauge" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=narrow_gauge"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:railway=narrow_gauge"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=narrow_gauge"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:railway=narrow_gauge"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:railway=narrow_gauge"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=narrow_gauge"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:railway=narrow_gauge" />
             <key key="railway" value="narrow_gauge" />
             <optional>
                 <combo key="usage" text="Usage" values="main,branch,industrial,military,tourism,freight" />
@@ -2493,9 +2605,10 @@
         </item> <!-- Narrow Gauge Rail -->
         <item name="Monorail" icon="presets/transport/railway/monorail.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=monorail"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:railway=monorail"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=monorail"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=monorail"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:railway=monorail" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:railway=monorail" />
             <key key="railway" value="monorail" />
             <optional>
                 <reference ref="railway_service" />
@@ -2504,6 +2617,7 @@
         </item> <!-- Monorail -->
         <item name="Preserved" icon="presets/transport/railway/preserved.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=preserved"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:railway=preserved"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=preserved"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:railway=preserved"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=preserved"
@@ -2514,7 +2628,11 @@
             </optional>
         </item> <!-- Preserved -->
         <item name="Light Rail" icon="presets/transport/railway/light_rail.svg" type="way" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=light_rail" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=light_rail"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:railway=light_rail"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=light_rail"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=light_rail"
+                  zh_CN.href="http://wiki.openstreetmap.org/wiki/Zh-hans:Tag:railway=light_rail" />
             <key key="railway" value="light_rail" />
             <optional>
                 <reference ref="railway_service_gauge_electrified" />
@@ -2522,11 +2640,13 @@
         </item> <!-- Light Rail -->
         <item name="Subway" icon="presets/transport/railway/subway.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=subway"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:railway=subway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=subway"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:railway=subway"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=subway"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:railway=subway"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:railway=subway" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:railway=subway"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:railway=subway"
+                  zh_CN.href="http://wiki.openstreetmap.org/wiki/Zh-hans:Tag:railway=subway" />
             <key key="railway" value="subway" />
             <optional>
                 <reference ref="railway_service_gauge_electrified" />
@@ -2534,10 +2654,11 @@
         </item> <!-- Subway -->
         <item name="Tram" icon="presets/transport/railway/tram.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=tram"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:railway=tram"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=tram"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:railway=tram"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=tram"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:railway=tram"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:railway=tram"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:railway=tram"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:railway=tram" />
             <key key="railway" value="tram" />
@@ -2546,7 +2667,12 @@
             </optional>
         </item> <!-- Tram -->
         <item name="Funicular" icon="presets/transport/railway/funicular.svg" type="way" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=funicular" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=funicular"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:railway=funicular"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=funicular"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:railway=funicular"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=funicular"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:railway=funicular" />
             <key key="railway" value="funicular" />
             <optional>
                 <reference ref="railway_service_gauge_electrified" />
@@ -2554,10 +2680,11 @@
         </item> <!-- Funicular -->
         <item name="Bus Guideway" icon="presets/transport/railway/bus_guideway.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=bus_guideway"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=bus_guideway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=bus_guideway"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=bus_guideway"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=bus_guideway"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=bus_guideway"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=bus_guideway"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=bus_guideway" />
             <key key="highway" value="bus_guideway" />
             <optional>
@@ -2572,7 +2699,9 @@
         <separator/>
         <item name="Disused Rail" icon="presets/transport/railway/disused_rail.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=disused"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:railway=disused"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=disused"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:railway=disused"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=disused" />
             <key key="railway" value="disused" />
             <optional>
@@ -2581,6 +2710,7 @@
         </item> <!-- Disused Rail -->
         <item name="Abandoned Rail" icon="presets/transport/railway/abandoned_rail.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=abandoned"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:railway=abandoned"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=abandoned"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=abandoned"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:railway=abandoned"
@@ -2603,7 +2733,7 @@
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:railway=level_crossing"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=level_crossing"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:railway=level_crossing"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:railway=level_crossing"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:railway=level_crossing"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:railway=level_crossing" />
             <key key="railway" value="level_crossing" />
             <optional>
@@ -2614,13 +2744,17 @@
             </optional>
         </item> <!-- Level Crossing -->
         <item name="Crossing" icon="presets/transport/railway/crossing.svg" type="node" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Key:crossing"
-                  bg.href="http://wiki.openstreetmap.org/wiki/Bg:Key:crossing"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Key:crossing"
-                  fi.href="http://wiki.openstreetmap.org/wiki/Fi:Key:crossing"
-                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:crossing"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Key:crossing"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:crossing" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=crossing"
+                  bg.href="http://wiki.openstreetmap.org/wiki/Bg:Tag:railway=crossing"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:railway=crossing"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=crossing"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:railway=crossing"
+                  fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:railway=crossing"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:railway=crossing"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=crossing"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:railway=crossing"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:railway=crossing"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:railway=crossing" />
             <key key="railway" value="crossing" />
             <optional>
                 <combo key="crossing" text="Crossing type" values="uncontrolled,traffic_signals,island,unmarked,no" />
@@ -2634,35 +2768,45 @@
         </item> <!-- Crossing -->
         <item name="Turntable" icon="presets/transport/railway/turntable.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=turntable"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:railway=turntable"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=turntable"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=turntable"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:railway=turntable"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:railway=turntable"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:railway=turntable" />
             <key key="railway" value="turntable" />
         </item> <!-- Turntable -->
         <item name="Buffer Stop" icon="presets/transport/railway/buffer_stop.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=buffer_stop"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:railway=buffer_stop"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=buffer_stop"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:railway=buffer_stop" />
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=buffer_stop"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:railway=buffer_stop" />
             <key key="railway" value="buffer_stop" />
         </item> <!-- Buffer Stop -->
         <item name="Railway Switch" icon="presets/transport/railway/switch.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=switch"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:railway=switch"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=switch"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:railway=switch" />
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=switch"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:railway=switch" />
             <key key="railway" value="switch" />
             <text key="ref" text="Reference" />
             <text key="operator" text="Operator" />
         </item> <!-- Railway Switch -->
         <item name="Railway Signal" icon="presets/transport/railway/signal.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=signal"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=signal" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:railway=signal"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=signal"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=signal" />
             <key key="railway" value="signal" />
             <text key="ref" text="Reference" />
             <text key="operator" text="Operator" />
         </item> <!-- Railway Signal -->
         <item name="Railway milestone" icon="presets/transport/railway/milestone.svg" type="node" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=milestone" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=milestone"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:railway=milestone"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:railway=milestone"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=milestone" />
             <key key="railway" value="milestone" />
             <text key="distance" text="Distance (kilometers)" />
             <text key="ref" text="Reference" />
@@ -2671,12 +2815,12 @@
     <group name="Aerialway" icon="presets/transport/aerialway/gondola.svg">
         <item name="Cable Car" icon="presets/transport/aerialway/cable_car.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=cable_car"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:aerialway=cable_car"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aerialway=cable_car"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:aerialway=cable_car"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:aerialway=cable_car"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:aerialway=cable_car"
-                  ko.href="http://wiki.openstreetmap.org/wiki/Ko:Tag:aerialway=cable_car"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:aerialway=cable_car"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:aerialway=cable_car"
                   sv.href="http://wiki.openstreetmap.org/wiki/Sv:Tag:aerialway=cable_car" />
             <space />
             <key key="aerialway" value="cable_car" />
@@ -2690,7 +2834,10 @@
         </item> <!-- Cable Car -->
         <item name="Chair Lift" icon="presets/transport/aerialway/chair_lift.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=chair_lift"
-                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:aerialway=chair_lift" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:aerialway=chair_lift"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aerialway=chair_lift"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:aerialway=chair_lift"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:aerialway=chair_lift" />
             <space />
             <key key="aerialway" value="chair_lift" />
             <reference ref="name_ref" />
@@ -2703,7 +2850,11 @@
             </optional>
         </item> <!-- Chair Lift -->
         <item name="Gondola" icon="presets/transport/aerialway/gondola.svg" type="way" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=gondola" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=gondola"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:aerialway=gondola"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aerialway=gondola"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:aerialway=gondola"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:aerialway=gondola" />
             <space />
             <key key="aerialway" value="gondola" />
             <reference ref="name_ref" />
@@ -2715,7 +2866,8 @@
             </optional>
         </item> <!-- Gondola -->
         <item name="Mixed Lift" icon="presets/transport/aerialway/mixed_lift.svg" type="way" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=mixed_lift" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=mixed_lift"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:aerialway=mixed_lift" />
             <space />
             <key key="aerialway" value="mixed_lift" />
             <reference ref="name_ref" />
@@ -2729,6 +2881,7 @@
         </item> <!-- Mixed Lift -->
         <item name="Drag Lift" icon="presets/transport/aerialway/drag_lift.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=drag_lift"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:aerialway=drag_lift"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aerialway=drag_lift"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:aerialway=drag_lift" />
             <space />
@@ -2740,7 +2893,10 @@
             </optional>
         </item> <!-- Drag Lift -->
         <item name="Magic Carpet" icon="presets/transport/aerialway/magic_carpet.svg" type="way" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=magic_carpet" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=magic_carpet"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:aerialway=magic_carpet"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aerialway=magic_carpet"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:aerialway=magic_carpet" />
             <space />
             <key key="aerialway" value="magic_carpet" />
             <reference ref="name_ref" />
@@ -2751,7 +2907,9 @@
         </item> <!-- Magic Carpet -->
         <item name="Goods" icon="presets/transport/aerialway/goods.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=goods"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aerialway=goods" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:aerialway=goods"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aerialway=goods"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:aerialway=goods" />
             <space />
             <key key="aerialway" value="goods" />
             <reference ref="name_ref" />
@@ -2762,13 +2920,20 @@
         <separator/>
         <item name="Station" name_context="aerialway" icon="presets/transport/aerialway/station.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=station"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:aerialway=station" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:aerialway=station"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aerialway=station"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:aerialway=station"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:aerialway=station"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:aerialway=station" />
             <space />
             <key key="aerialway" value="station" />
             <text key="name" text="Name" />
         </item> <!-- Station -->
         <item name="Pylon" icon="presets/transport/aerialway/pylon.svg" type="node" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=pylon" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=pylon"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:aerialway=pylon"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aerialway=pylon"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:aerialway=pylon" />
             <space />
             <key key="aerialway" value="pylon" />
             <text key="name" text="Name" />
@@ -2778,6 +2943,7 @@
     <group name="Car" icon="presets/shop/vehicle.svg">
         <item name="Parking" icon="presets/vehicle/parking/parking.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=parking"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=parking"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=parking"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=parking"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=parking"
@@ -2786,7 +2952,6 @@
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:amenity=parking"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=parking"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=parking"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=parking"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=parking" />
             <space />
             <key key="amenity" value="parking" />
@@ -2806,6 +2971,7 @@
         </item> <!-- Parking -->
         <item name="Parking Space" icon="presets/vehicle/parking/parking_space.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=parking_space"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=parking_space"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=parking_space"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=parking_space"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=parking_space"
@@ -2822,6 +2988,7 @@
         </item> <!-- Parking Space -->
         <item name="Parking Entrance" icon="presets/vehicle/parking/parking.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=parking_entrance"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=parking_entrance"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=parking_entrance"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=parking_entrance"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=parking_entrance"
@@ -2838,6 +3005,7 @@
         <separator/>
         <item name="Fuel" icon="presets/vehicle/fuel.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=fuel"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=fuel"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=fuel"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=fuel"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=fuel"
@@ -2845,9 +3013,8 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=fuel"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=fuel"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=fuel"
-                  no.href="http://wiki.openstreetmap.org/wiki/No:Tag:amenity=fuel"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=fuel"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=fuel"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=fuel"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=fuel"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:amenity=fuel"
                   zh_TW.href="http://wiki.openstreetmap.org/wiki/Zh-hant:Tag:amenity=fuel" />
@@ -2892,7 +3059,9 @@
         </item> <!-- Fuel -->
         <item name="Charging Station" icon="presets/vehicle/charging_station.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=charging_station"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=charging_station"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=charging_station"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=charging_station"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=charging_station"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=charging_station" />
             <space />
@@ -2940,12 +3109,14 @@
         </item> <!-- Charging Station -->
         <item name="Wash" icon="presets/vehicle/car_wash.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=car_wash"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=car_wash"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=car_wash"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=car_wash"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=car_wash"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=car_wash"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=car_wash"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=car_wash"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=car_wash"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=car_wash"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=car_wash" />
             <space />
             <key key="amenity" value="car_wash" />
@@ -2955,6 +3126,7 @@
         <separator/>
         <item name="Car Dealer" icon="presets/shop/vehicle.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=car"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=car"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=car"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:shop=car"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=car"
@@ -2962,7 +3134,7 @@
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=car"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:shop=car"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=car"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=car"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=car"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=car" />
             <space />
             <key key="shop" value="car" />
@@ -2973,10 +3145,12 @@
         </item> <!-- Car Dealer -->
         <item name="Repair" icon="presets/vehicle/repair_shop.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=car_repair"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=car_repair"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=car_repair"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=car_repair"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=car_repair"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=car_repair"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=car_repair"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=car_repair"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=car_repair" />
             <space />
             <key key="shop" value="car_repair" />
@@ -2986,7 +3160,9 @@
         </item> <!-- Repair -->
         <item name="Parts" icon="presets/vehicle/car_parts.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=car_parts"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=car_parts"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=car_parts"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=car_parts"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=car_parts" />
             <space />
             <key key="shop" value="car_parts" />
@@ -2996,8 +3172,11 @@
         </item> <!-- Parts -->
         <item name="Tires" icon="presets/vehicle/tyres.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=tyres"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=tyres"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=tyres"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=tyres" />
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=tyres"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=tyres"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=tyres" />
             <space />
             <key key="shop" value="tyres" />
             <reference ref="name_brand_operator_oh_wheelchair" />
@@ -3006,12 +3185,14 @@
         <separator/>
         <item name="Rental" icon="presets/vehicle/car_rental.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=car_rental"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=car_rental"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=car_rental"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=car_rental"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=car_rental"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=car_rental"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=car_rental"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=car_rental"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=car_rental"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=car_rental"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=car_rental" />
             <space />
             <key key="amenity" value="car_rental" />
@@ -3020,11 +3201,12 @@
         </item> <!-- Rental -->
         <item name="Sharing" icon="presets/vehicle/car_sharing.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=car_sharing"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=car_sharing"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=car_sharing"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=car_sharing"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=car_sharing"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=car_sharing"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=car_sharing"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=car_sharing"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=car_sharing" />
             <space />
             <key key="amenity" value="car_sharing" />
@@ -3037,9 +3219,11 @@
     <group name="Motorcycle" icon="presets/vehicle/motorbike.svg">
         <item name="Parking" icon="presets/vehicle/parking/motorbike.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=motorcycle_parking"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=motorcycle_parking"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=motorcycle_parking"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=motorcycle_parking"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=motorcycle_parking"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=motorcycle_parking"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=motorcycle_parking" />
             <space />
             <key key="amenity" value="motorcycle_parking" />
@@ -3051,10 +3235,12 @@
         </item> <!-- Parking -->
         <item name="Motorcycle Dealer" icon="presets/vehicle/motorbike.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=motorcycle"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=motorcycle"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=motorcycle"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=motorcycle"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=motorcycle"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=motorcycle"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=motorcycle"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=motorcycle"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=motorcycle" />
             <space />
             <key key="shop" value="motorcycle" />
@@ -3078,6 +3264,7 @@
     <group name="Bicycle" icon="presets/shop/bicycle.svg">
         <item name="Parking" icon="presets/vehicle/parking/bicycle.svg" type="node,way,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bicycle_parking"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=bicycle_parking"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=bicycle_parking"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=bicycle_parking"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=bicycle_parking"
@@ -3086,7 +3273,6 @@
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=bicycle_parking"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=bicycle_parking"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=bicycle_parking"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=bicycle_parking"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=bicycle_parking"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:amenity=bicycle_parking" />
             <space />
@@ -3100,12 +3286,13 @@
         </item> <!-- Parking -->
         <item name="Bike Dealer" icon="presets/shop/bicycle.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=bicycle"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=bicycle"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=bicycle"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:shop=bicycle"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=bicycle"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=bicycle"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=bicycle"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=bicycle"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=bicycle"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=bicycle"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:shop=bicycle" />
             <space />
@@ -3122,6 +3309,7 @@
         </item> <!-- Bike Dealer -->
         <item name="Rental" icon="presets/vehicle/bicycle_rental.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bicycle_rental"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=bicycle_rental"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=bicycle_rental"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=bicycle_rental"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=bicycle_rental"
@@ -3130,7 +3318,7 @@
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=bicycle_rental"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=bicycle_rental"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=bicycle_rental"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=bicycle_rental"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=bicycle_rental"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=bicycle_rental"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:amenity=bicycle_rental" />
             <space />
@@ -3140,6 +3328,7 @@
         </item> <!-- Rental -->
         <item name="Public Bicycle Repair Station" icon="presets/vehicle/bicycle_repair_station.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bicycle_repair_station"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=bicycle_repair_station"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=bicycle_repair_station"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=bicycle_repair_station"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=bicycle_repair_station" />
@@ -3276,6 +3465,7 @@
         </item> <!-- Platform -->
         <item name="Station" name_context="railway" type="node,closedway,multipolygon" icon="presets/transport/station.svg" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:public_transport=station"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:public_transport=station"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:public_transport=station"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:public_transport=station"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:public_transport=station"
@@ -3293,11 +3483,13 @@
         <separator/> <!-- *** Access *** -->
         <item name="Subway Entrance" icon="presets/transport/underground.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=subway_entrance"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:railway=subway_entrance"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=subway_entrance"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:railway=subway_entrance"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=subway_entrance"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:railway=subway_entrance"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:railway=subway_entrance" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:railway=subway_entrance"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:railway=subway_entrance"
+                  zh_CN.href="http://wiki.openstreetmap.org/wiki/Zh-hans:Tag:railway=subway_entrance" />
             <key key="railway" value="subway_entrance" />
             <optional>
                 <text key="name" text="Name" />
@@ -3307,11 +3499,13 @@
         </item> <!-- Subway Entrance -->
         <item name="Ticket Machine" icon="presets/transport/ticket-machine.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=vending_machine"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=vending_machine"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=vending_machine"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=vending_machine"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=vending_machine"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=vending_machine"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=vending_machine"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=vending_machine"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=vending_machine"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=vending_machine" />
             <space />
             <key key="amenity" value="vending_machine" />
@@ -3348,10 +3542,11 @@
         </item> <!-- Public transport route (Legacy) -->
         <item name="Station" name_context="railway" icon="presets/transport/railway_station.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=station"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:railway=station"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=station"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:railway=station"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=station"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:railway=station"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:railway=station"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:railway=station"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:railway=station" />
             <key key="railway" value="station" />
@@ -3362,9 +3557,11 @@
         </item> <!-- Station -->
         <item name="Railway Halt" icon="presets/transport/railway_halt.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=halt"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:railway=halt"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=halt"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:railway=halt"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=halt"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:railway=halt"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:railway=halt"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:railway=halt" />
             <key key="railway" value="halt" />
             <optional>
@@ -3373,9 +3570,12 @@
         </item> <!-- Railway Halt -->
         <item name="Tram Stop" icon="presets/transport/tram.svg" type="node" preset_name_label="true">
            <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=tram_stop"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:railway=tram_stop"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=tram_stop"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:railway=tram_stop"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=tram_stop"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:railway=tram_stop" />
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:railway=tram_stop"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:railway=tram_stop" />
             <key key="railway" value="tram_stop" />
             <optional>
                 <text key="name" text="Name" />
@@ -3383,9 +3583,10 @@
         </item> <!-- Tram Stop -->
         <item name="Railway Platform" icon="presets/transport/platform_rail.svg" type="way,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=platform"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:railway=platform"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=platform"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=platform"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:railway=platform" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:railway=platform" />
             <space />
             <key key="railway" value="platform" />
             <text key="ref" text="Reference (track number)" />
@@ -3395,10 +3596,12 @@
         <separator/>
         <item name="Bus Station" icon="presets/transport/bus_old.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bus_station"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=bus_station"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=bus_station"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=bus_station"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=bus_station"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=bus_station"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=bus_station"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=bus_station"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=bus_station" />
             <key key="amenity" value="bus_station" />
             <optional>
@@ -3407,12 +3610,13 @@
         </item> <!-- Bus Station -->
         <item name="Bus Stop" icon="presets/transport/bus_small.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=bus_stop"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=bus_stop"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=bus_stop"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=bus_stop"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=bus_stop"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=bus_stop"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=bus_stop"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=bus_stop"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=bus_stop"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=bus_stop"
                   zh_TW.href="http://wiki.openstreetmap.org/wiki/Zh-hant:Tag:highway=bus_stop" />
             <key key="highway" value="bus_stop" />
@@ -3428,7 +3632,8 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=platform"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=platform"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=platform"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=platform"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=platform"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=platform"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=platform" />
             <space />
             <key key="highway" value="platform" />
@@ -3440,6 +3645,7 @@
     </group> <!-- Public Transport -->
     <item name="Taxi" icon="presets/transport/taxi.svg" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=taxi"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=taxi"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=taxi"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=taxi"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=taxi"
@@ -3447,7 +3653,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=taxi"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=taxi"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=taxi"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=taxi"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=taxi"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=taxi" />
         <space />
         <key key="amenity" value="taxi" />
@@ -3457,9 +3663,11 @@
     <group name="Airport" icon="presets/transport/airport.svg">
         <item name="Airport Ground" icon="presets/transport/airport.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=aerodrome"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:aeroway=aerodrome"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aeroway=aerodrome"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:aeroway=aerodrome"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:aeroway=aerodrome"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:aeroway=aerodrome"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:aeroway=aerodrome"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:aeroway=aerodrome" />
             <space />
             <reference ref="aerodrome" />
@@ -3467,10 +3675,11 @@
         <separator/>
         <item name="Runway" icon="presets/transport/airport/runway.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=runway"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:aeroway=runway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aeroway=runway"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:aeroway=runway"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:aeroway=runway"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:aeroway=runway"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:aeroway=runway"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:aeroway=runway" />
             <key key="aeroway" value="runway" />
             <optional>
@@ -3480,9 +3689,10 @@
         </item> <!-- Runway -->
         <item name="Taxiway" icon="presets/transport/airport/taxiway.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=taxiway"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:aeroway=taxiway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aeroway=taxiway"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:aeroway=taxiway"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:aeroway=taxiway"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:aeroway=taxiway"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:aeroway=taxiway" />
             <key key="aeroway" value="taxiway" />
             <optional>
@@ -3490,7 +3700,9 @@
             </optional>
         </item> <!-- Taxiway -->
         <item name="Holding Position" icon="presets/transport/airport/holding_position.svg" type="node" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=holding_position" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=holding_position"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:aeroway=holding_position"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:aeroway=holding_position" />
             <key key="aeroway" value="holding_position" />
             <optional>
                 <text key="ref" text="Reference" />
@@ -3498,10 +3710,12 @@
         </item> <!-- Holding Position -->
         <item name="Helipad" icon="presets/transport/airport/helipad.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=helipad"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:aeroway=helipad"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aeroway=helipad"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:aeroway=helipad"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:aeroway=helipad"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:aeroway=helipad"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:aeroway=helipad"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:aeroway=helipad"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:aeroway=helipad" />
             <key key="aeroway" value="helipad" />
             <optional>
@@ -3510,21 +3724,26 @@
         </item> <!-- Helipad -->
         <item name="Apron" icon="presets/transport/airport/apron.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=apron"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:aeroway=apron"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aeroway=apron"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:aeroway=apron"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:aeroway=apron"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:aeroway=apron"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:aeroway=apron" />
             <key key="aeroway" value="apron" />
         </item> <!-- Apron -->
         <item name="Plane Parking Position" icon="presets/transport/airport/parking_position.svg" type="node,way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=parking_position"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:aeroway=parking_position"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:aeroway=parking_position"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:aeroway=parking_position" />
             <key key="aeroway" value="parking_position" />
             <text key="ref" text="Reference" />
         </item> <!-- Plane Parking Position -->
         <item name="Hangar" icon="presets/transport/airport/hangar.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=hangar"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:aeroway=hangar"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aeroway=hangar"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:aeroway=hangar"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:aeroway=hangar"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:aeroway=hangar"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:aeroway=hangar" />
@@ -3534,23 +3753,29 @@
         <item name="Beacon" icon="presets/landmark/beacon.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=beacon"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=beacon"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=beacon"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=beacon"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=beacon"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=beacon"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=beacon" />
             <key key="man_made" value="beacon" />
         </item> <!-- Beacon -->
         <item name="Windsock" icon="presets/transport/airport/windsock.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=windsock"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:aeroway=windsock"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:aeroway=windsock"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:aeroway=windsock"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:aeroway=windsock"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:aeroway=windsock"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:aeroway=windsock" />
             <key key="aeroway" value="windsock" />
         </item> <!-- Windsock -->
         <separator/>
         <item name="Terminal" icon="presets/transport/airport/terminal.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=terminal"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:aeroway=terminal"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aeroway=terminal"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:aeroway=terminal"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:aeroway=terminal"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:aeroway=terminal"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:aeroway=terminal"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:aeroway=terminal" />
             <space />
             <key key="aeroway" value="terminal" />
@@ -3560,8 +3785,10 @@
         </item> <!-- Terminal -->
         <item name="Gate" name_context="airport" icon="presets/transport/airport/gate.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=gate"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:aeroway=gate"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aeroway=gate"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:aeroway=gate"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:aeroway=gate"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:aeroway=gate"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:aeroway=gate" />
             <space />
             <key key="aeroway" value="gate" />
@@ -3575,11 +3802,12 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=hotel"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=hotel"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=hotel"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:tourism=hotel"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:tourism=hotel"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:tourism=hotel"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:tourism=hotel"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:tourism=hotel"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:tourism=hotel"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:tourism=hotel"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:tourism=hotel" />
             <space />
             <key key="tourism" value="hotel" />
@@ -3600,8 +3828,9 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=motel"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:tourism=motel"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:tourism=motel"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:tourism=motel"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:tourism=motel"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:tourism=motel"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:tourism=motel"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:tourism=motel" />
             <space />
             <key key="tourism" value="motel" />
@@ -3621,8 +3850,9 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=guest_house"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=guest_house"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:tourism=guest_house"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:tourism=guest_house"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:tourism=guest_house"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:tourism=guest_house"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:tourism=guest_house"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:tourism=guest_house" />
             <space />
             <key key="tourism" value="guest_house" />
@@ -3638,7 +3868,13 @@
             <preset_link preset_name="Building" />
         </item> <!-- Guest House/Bed & Breakfast -->
         <item name="Apartment" icon="presets/accommodation/apartment.svg" type="node,closedway" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=apartment" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=apartment"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=apartment"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=apartment"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:tourism=apartment"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:tourism=apartment"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:tourism=apartment"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:tourism=apartment" />
             <space />
             <key key="tourism" value="apartment" />
             <reference ref="name_operator" />
@@ -3655,9 +3891,10 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=chalet"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=chalet"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:tourism=chalet"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:tourism=chalet"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:tourism=chalet"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:tourism=chalet"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:tourism=chalet"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:tourism=chalet"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:tourism=chalet" />
             <space />
             <key key="tourism" value="chalet" />
@@ -3679,7 +3916,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:tourism=hostel"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:tourism=hostel"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:tourism=hostel"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:tourism=hostel"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:tourism=hostel"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:tourism=hostel" />
             <space />
             <key key="tourism" value="hostel" />
@@ -3700,7 +3937,9 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=alpine_hut"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:tourism=alpine_hut"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:tourism=alpine_hut"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:tourism=alpine_hut"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:tourism=alpine_hut"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:tourism=alpine_hut"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:tourism=alpine_hut"
                   zh_TW.href="http://wiki.openstreetmap.org/wiki/Zh-hant:Tag:tourism=alpine_hut" />
             <space />
             <key key="tourism" value="alpine_hut" />
@@ -3718,6 +3957,8 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=wilderness_hut"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=wilderness_hut"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=wilderness_hut"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:tourism=wilderness_hut"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:tourism=wilderness_hut"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:tourism=wilderness_hut" />
             <space />
             <key key="tourism" value="wilderness_hut" />
@@ -3740,9 +3981,10 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=caravan_site"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=caravan_site"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=caravan_site"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:tourism=caravan_site"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:tourism=caravan_site"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:tourism=caravan_site"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:tourism=caravan_site" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:tourism=caravan_site" />
             <space />
             <key key="tourism" value="caravan_site" />
             <reference ref="name_operator" />
@@ -3767,7 +4009,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:tourism=camp_site"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:tourism=camp_site"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:tourism=camp_site"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:tourism=camp_site"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:tourism=camp_site"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:tourism=camp_site" />
             <space />
             <key key="tourism" value="camp_site" />
@@ -3784,13 +4026,14 @@
     <group name="Food+Drinks" icon="presets/food/restaurant.svg">
         <item name="Restaurant" icon="presets/food/restaurant.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=restaurant"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=restaurant"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=restaurant"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=restaurant"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=restaurant"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=restaurant"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=restaurant"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=restaurant"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=restaurant"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=restaurant"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=restaurant" />
             <space />
             <key key="amenity" value="restaurant" />
@@ -3809,11 +4052,13 @@
         </item> <!-- Restaurant -->
         <item name="Fast Food" icon="presets/food/fast_food.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=fast_food"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=fast_food"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=fast_food"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=fast_food"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=fast_food"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=fast_food"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=fast_food"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=fast_food"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=fast_food"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=fast_food" />
             <space />
             <key key="amenity" value="fast_food" />
@@ -3831,9 +4076,12 @@
         </item> <!-- Fast Food -->
         <item name="Food Court" icon="presets/food/food_court.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=food_court"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=food_court"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=food_court"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=food_court"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=food_court"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=food_court"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=food_court"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=food_court"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=food_court" />
             <space />
             <key key="amenity" value="food_court" />
@@ -3847,14 +4095,16 @@
         </item> <!-- Food Court -->
         <item name="Cafe" icon="presets/food/cafe.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=cafe"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=cafe"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=cafe"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=cafe"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=cafe"
                   et.href="http://wiki.openstreetmap.org/wiki/Et:Tag:amenity=cafe"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=cafe"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=cafe"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=cafe"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:amenity=cafe"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=cafe"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=cafe"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=cafe"
                   zh_CN.href="http://wiki.openstreetmap.org/wiki/Zh-hans:Tag:amenity=cafe" />
             <space />
@@ -3871,7 +4121,16 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Cafe -->
         <item name="Ice cream" icon="presets/food/ice_cream.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:ice_cream" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=ice_cream"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=ice_cream"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=ice_cream"
+                  el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=ice_cream"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=ice_cream"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=ice_cream"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=ice_cream"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=ice_cream"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=ice_cream"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=ice_cream" />
             <space />
             <key key="amenity" value="ice_cream" />
             <reference ref="name_operator" />
@@ -3886,11 +4145,13 @@
         </item> <!-- Ice cream -->
         <item name="Pub" icon="presets/food/pub.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=pub"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=pub"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=pub"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=pub"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=pub"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=pub"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=pub"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=pub"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=pub"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=pub" />
             <space />
             <key key="amenity" value="pub" />
@@ -3907,10 +4168,13 @@
         </item> <!-- Pub -->
         <item name="Beer Garden" icon="presets/food/biergarten.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=biergarten"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=biergarten"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=biergarten"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=biergarten"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=biergarten"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=biergarten"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=biergarten"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=biergarten"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=biergarten"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=biergarten" />
             <space />
             <key key="amenity" value="biergarten" />
@@ -3924,12 +4188,14 @@
         </item> <!-- Beer Garden -->
         <item name="Bar" icon="presets/food/bar.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bar"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=bar"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=bar"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=bar"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=bar"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=bar"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=bar"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=bar"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=bar"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=bar"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=bar"
                   zh_CN.href="http://wiki.openstreetmap.org/wiki/Zh-hans:Tag:amenity=bar" />
             <space />
@@ -3950,7 +4216,8 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=attraction"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:tourism=attraction"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:tourism=attraction"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:tourism=attraction"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:tourism=attraction"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:tourism=attraction"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:tourism=attraction" />
             <space />
             <key key="tourism" value="attraction" />
@@ -3960,10 +4227,11 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=viewpoint"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=viewpoint"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=viewpoint"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:tourism=viewpoint"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:tourism=viewpoint"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:tourism=viewpoint"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:tourism=viewpoint"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:tourism=viewpoint"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:tourism=viewpoint"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:tourism=viewpoint" />
             <space />
             <key key="tourism" value="viewpoint" />
@@ -4031,6 +4299,7 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:information=guidepost"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:information=guidepost"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:information=guidepost"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:information=guidepost"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:information=guidepost"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:information=guidepost"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:information=guidepost" />
@@ -4095,7 +4364,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:tourism=information"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:tourism=information"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:tourism=information"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:tourism=information"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:tourism=information"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:tourism=information" />
             <space />
             <key key="tourism" value="information" />
@@ -4106,11 +4375,13 @@
     <group name="Leisure" icon="presets/leisure/theme_park.svg">
         <item name="Movie Theater/Cinema" icon="presets/leisure/cinema.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=cinema"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=cinema"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=cinema"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=cinema"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=cinema"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=cinema"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=cinema"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=cinema"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=cinema"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=cinema" />
             <space />
             <key key="amenity" value="cinema" />
@@ -4130,7 +4401,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:tourism=zoo"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:tourism=zoo"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:tourism=zoo"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:tourism=zoo" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:tourism=zoo" />
             <space />
             <key key="tourism" value="zoo" />
             <reference ref="name_oh_wheelchair" />
@@ -4140,13 +4411,16 @@
         </item> <!-- Zoo -->
         <item name="Dog Park" icon="presets/leisure/dogpark.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=dog_park"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=dog_park"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:leisure=dog_park"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=dog_park"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=dog_park"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:leisure=dog_park"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:leisure=dog_park"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:leisure=dog_park"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=dog_park"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:leisure=dog_park"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=dog_park"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=dog_park"
                   sv.href="http://wiki.openstreetmap.org/wiki/Sv:Tag:leisure=dog_park" />
             <space />
             <key key="leisure" value="dog_park" />
@@ -4161,8 +4435,9 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=theme_park"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=theme_park"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:tourism=theme_park"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:tourism=theme_park"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:tourism=theme_park"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:tourism=theme_park"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:tourism=theme_park"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:tourism=theme_park" />
             <space />
             <key key="tourism" value="theme_park" />
@@ -4172,11 +4447,13 @@
         </item> <!-- Amusement/Theme Park -->
         <item name="Water Park" icon="presets/leisure/water_park.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=water_park"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=water_park"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=water_park"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=water_park"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:leisure=water_park"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=water_park"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=water_park"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=water_park"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:leisure=water_park"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:leisure=water_park" />
             <space />
             <key key="leisure" value="water_park" />
@@ -4185,7 +4462,13 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Water Park -->
         <item name="Beach Resort" icon="presets/leisure/beach_resort.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=beach_resort" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=beach_resort"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=beach_resort"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=beach_resort"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:leisure=beach_resort"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=beach_resort"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=beach_resort"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:leisure=beach_resort" />
             <space />
             <key key="leisure" value="beach_resort" />
             <reference ref="name_operator_oh_wheelchair" />
@@ -4196,11 +4479,13 @@
         <item name="Swimming Pool" icon="presets/sport/swimming.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=swimming_pool"
                   ca.href="http://wiki.openstreetmap.org/wiki/Ca:Tag:leisure=swimming_pool"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=swimming_pool"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=swimming_pool"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:leisure=swimming_pool"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:leisure=swimming_pool"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=swimming_pool"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:leisure=swimming_pool"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=swimming_pool"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=swimming_pool"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:leisure=swimming_pool" />
             <key key="leisure" value="swimming_pool" />
             <space />
@@ -4209,7 +4494,11 @@
             <combo key="access" text="Access" values="yes,customers,private" />
         </item> <!-- Swimming Pool -->
         <item name="Fitness Station" icon="presets/leisure/fitness_station.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=fitness_station" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=fitness_station"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=fitness_station"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=fitness_station"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=fitness_station"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=fitness_station" />
             <space />
             <key key="leisure" value="fitness_station" />
             <reference ref="name_operator_oh_wheelchair" />
@@ -4218,8 +4507,9 @@
         </item> <!-- Fitness Station -->
         <item name="Sauna" icon="presets/leisure/sauna.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=sauna"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=sauna"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=sauna"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=sauna"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=sauna"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=sauna" />
             <space />
             <key key="leisure" value="sauna" />
@@ -4229,7 +4519,13 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Sauna -->
         <item name="Horse Riding" icon="presets/leisure/horse_riding.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=horse_riding" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=horse_riding"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=horse_riding"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=horse_riding"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=horse_riding"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:leisure=horse_riding"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=horse_riding"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=horse_riding" />
             <space />
             <key key="leisure" value="horse_riding" />
             <reference ref="name_operator_oh_wheelchair" />
@@ -4240,6 +4536,7 @@
         <separator/>
         <item name="Playground" icon="presets/leisure/playground.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=playground"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=playground"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=playground"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=playground"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:leisure=playground"
@@ -4247,7 +4544,6 @@
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=playground"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=playground"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=playground"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:leisure=playground"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:leisure=playground" />
             <space />
             <key key="leisure" value="playground" />
@@ -4257,9 +4553,11 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=picnic_site"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=picnic_site"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=picnic_site"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:tourism=picnic_site"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:tourism=picnic_site"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:tourism=picnic_site"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:tourism=picnic_site"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:tourism=picnic_site"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:tourism=picnic_site"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:tourism=picnic_site" />
             <space />
             <key key="tourism" value="picnic_site" />
@@ -4268,17 +4566,24 @@
         </item> <!-- Picnic Site -->
         <item name="Picnic Table" icon="presets/leisure/picnic.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=picnic_table"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=picnic_table" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=picnic_table"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=picnic_table"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=picnic_table"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:leisure=picnic_table"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=picnic_table"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=picnic_table" />
             <space />
             <key key="leisure" value="picnic_table" />
             <check key="covered" text="Covered" />
         </item> <!-- Picnic Table -->
         <item name="Public Grill" icon="presets/leisure/bbq.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bbq"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=bbq"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=bbq"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=bbq"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=bbq"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=bbq"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=bbq"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=bbq"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=bbq" />
             <space />
             <key key="amenity" value="bbq" />
@@ -4288,6 +4593,7 @@
         </item> <!-- Public Grill -->
         <item name="Firepit" icon="presets/leisure/firepit.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=firepit"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=firepit"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=firepit"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=firepit"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=firepit"
@@ -4299,15 +4605,23 @@
         </item> <!-- Firepit -->
         <item name="Fishing" icon="presets/sport/fishing.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=fishing"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=fishing"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=fishing"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:leisure=fishing"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=fishing"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=fishing"
-                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=fishing"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:leisure=fishing" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=fishing" />
             <space />
             <key key="leisure" value="fishing" />
             <text key="name" text="Name" />
         </item> <!-- Fishing -->
         <item name="Bird Hide" icon="presets/leisure/bird_hide.svg" type="node,closedway" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=bird_hide" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=bird_hide"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=bird_hide"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=bird_hide"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=bird_hide"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=bird_hide"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=bird_hide" />
             <space />
             <key key="leisure" value="bird_hide" />
             <reference ref="name_ref_operator" />
@@ -4315,13 +4629,14 @@
         <separator/>
         <item name="Night Club" icon="presets/leisure/nightclub.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=nightclub"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=nightclub"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:amenity=nightclub"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=nightclub"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=nightclub"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=nightclub"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=nightclub"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=nightclub"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=nightclub"
-                  ro.href="http://wiki.openstreetmap.org/wiki/Ro:Tag:amenity=nightclub"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=nightclub"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=nightclub" />
             <space />
             <key key="amenity" value="nightclub" />
@@ -4333,8 +4648,10 @@
         </item> <!-- Night Club -->
         <item name="Casino" icon="presets/leisure/casino.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=casino"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=casino"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=casino"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=casino"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=casino"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=casino" />
             <space />
             <key key="amenity" value="casino" />
@@ -4346,9 +4663,10 @@
         </item> <!-- Casino -->
         <item name="Strip Club" icon="presets/leisure/stripclub.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=stripclub"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=stripclub"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=stripclub"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=stripclub"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=stripclub"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=stripclub"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=stripclub" />
             <space />
             <key key="amenity" value="stripclub" />
@@ -4360,11 +4678,12 @@
         </item> <!-- Strip Club -->
         <item name="Brothel" icon="presets/leisure/brothel.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=brothel"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=brothel"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=brothel"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=brothel"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=brothel"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=brothel"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=brothel"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=brothel"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=brothel" />
             <space />
             <key key="amenity" value="brothel" />
@@ -4381,9 +4700,10 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=museum"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=museum"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:tourism=museum"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:tourism=museum"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:tourism=museum"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:tourism=museum"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:tourism=museum"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:tourism=museum"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:tourism=museum" />
             <space />
             <key key="tourism" value="museum" />
@@ -4394,10 +4714,13 @@
         </item> <!-- Museum -->
         <item name="Theatre" icon="presets/leisure/theater.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=theatre"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=theatre"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=theatre"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=theatre"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=theatre"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=theatre"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=theatre"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=theatre"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=theatre"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=theatre" />
             <space />
             <key key="amenity" value="theatre" />
@@ -4408,13 +4731,15 @@
         </item> <!-- Theatre -->
         <item name="Library" icon="presets/education/library.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=library"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=library"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=library"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=library"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=library"
                   et.href="http://wiki.openstreetmap.org/wiki/Et:Tag:amenity=library"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=library"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=library"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=library"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=library"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=library"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=library" />
             <space />
             <key key="amenity" value="library" />
@@ -4424,9 +4749,12 @@
         </item> <!-- Library -->
         <item name="Arts Centre" icon="presets/sightseeing/arts_centre.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=arts_centre"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=arts_centre"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=arts_centre"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=arts_centre"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=arts_centre"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=arts_centre"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=arts_centre"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=arts_centre"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=arts_centre" />
             <space />
             <key key="amenity" value="arts_centre" />
@@ -4443,7 +4771,7 @@
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:tourism=artwork"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:tourism=artwork"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:tourism=artwork"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:tourism=artwork"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:tourism=artwork"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:tourism=artwork" />
             <space />
             <key key="tourism" value="artwork" />
@@ -4453,9 +4781,10 @@
         </item> <!-- Artwork -->
         <item name="Studio" icon="presets/service/studio.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=studio"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=studio"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=studio"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=studio"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=studio"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=studio"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=studio" />
             <space />
             <key key="amenity" value="studio" />
@@ -4468,15 +4797,15 @@
     <group name="Place of Worship" icon="presets/religion/religion.svg">
         <item name="Church" icon="presets/religion/church.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=place_of_worship"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=place_of_worship"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:amenity=place_of_worship"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=place_of_worship"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=place_of_worship"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=place_of_worship"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=place_of_worship"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=place_of_worship"
-                  no.href="http://wiki.openstreetmap.org/wiki/No:Tag:amenity=place_of_worship"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=place_of_worship"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=place_of_worship"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=place_of_worship"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=place_of_worship"
                   sv.href="http://wiki.openstreetmap.org/wiki/Sv:Tag:amenity=place_of_worship"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:amenity=place_of_worship"
@@ -4640,11 +4969,12 @@
     <group name="Public Building" icon="presets/service/townhall.svg">
         <item name="Town Hall" icon="presets/service/townhall.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=townhall"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=townhall"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=townhall"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=townhall"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=townhall"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=townhall"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=townhall"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=townhall"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=townhall" />
             <space />
             <key key="amenity" value="townhall" />
@@ -4654,11 +4984,13 @@
         </item> <!-- Town Hall -->
         <item name="Community Centre" icon="presets/service/community_centre.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=community_centre"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=community_centre"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:amenity=community_centre"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=community_centre"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=community_centre"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=community_centre"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=community_centre"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=community_centre"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=community_centre"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=community_centre" />
             <label text="Community Centre" />
             <space />
@@ -4669,11 +5001,13 @@
         </item> <!-- Community Centre -->
         <item name="Embassy" icon="presets/service/embassy.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=embassy"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=embassy"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=embassy"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=embassy"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=embassy"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=embassy"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=embassy"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=embassy"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=embassy"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=embassy" />
             <space />
             <key key="amenity" value="embassy" />
@@ -4682,10 +5016,13 @@
         </item> <!-- Embassy -->
         <item name="Courthouse" icon="presets/service/courthouse.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=courthouse"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=courthouse"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=courthouse"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=courthouse"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=courthouse"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=courthouse"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=courthouse"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=courthouse"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=courthouse"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=courthouse" />
             <space />
             <key key="amenity" value="courthouse" />
@@ -4695,10 +5032,12 @@
         </item> <!-- Courthouse -->
         <item name="Prison" icon="presets/service/prison.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=prison"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=prison"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=prison"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=prison"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=prison"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=prison"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=prison"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=prison"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=prison" />
             <space />
             <key key="amenity" value="prison" />
@@ -4707,12 +5046,14 @@
         </item> <!-- Prison -->
         <item name="Police" icon="presets/service/police.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=police"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=police"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=police"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=police"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=police"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=police"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=police"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=police"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=police"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=police"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=police" />
             <space />
             <key key="amenity" value="police" />
@@ -4721,7 +5062,10 @@
             <preset_link preset_name="Building" />
         </item> <!-- Police -->
         <item name="Ranger Station" icon="presets/service/ranger_station.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=ranger_station" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=ranger_station"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=ranger_station"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=ranger_station"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=ranger_station" />
             <space />
             <key key="amenity" value="ranger_station" />
             <reference ref="name_operator_oh_wheelchair" />
@@ -4729,12 +5073,13 @@
         </item> <!-- Ranger Station -->
         <item name="Fire Station" icon="presets/service/firebrigade.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=fire_station"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=fire_station"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=fire_station"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=fire_station"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=fire_station"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=fire_station"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=fire_station"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=fire_station"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=fire_station"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=fire_station" />
             <space />
             <key key="amenity" value="fire_station" />
@@ -4744,13 +5089,14 @@
         </item> <!-- Fire Station -->
         <item name="Post Office" icon="presets/service/post_office.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=post_office"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=post_office"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=post_office"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=post_office"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=post_office"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=post_office"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:amenity=post_office"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=post_office"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=post_office"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=post_office"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=post_office"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:amenity=post_office" />
             <space />
@@ -4763,12 +5109,13 @@
     <group name="Education" icon="presets/education/school.svg">
         <item name="Kindergarten" icon="presets/education/kindergarten.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=kindergarten"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=kindergarten"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=kindergarten"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=kindergarten"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=kindergarten"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=kindergarten"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=kindergarten"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=kindergarten"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=kindergarten"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=kindergarten" />
             <space />
             <key key="amenity" value="kindergarten" />
@@ -4778,7 +5125,7 @@
         </item> <!-- Kindergarten -->
         <item name="School" icon="presets/education/school.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=school"
-                  ar.href="http://wiki.openstreetmap.org/wiki/Ar:Tag:amenity=school"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=school"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=school"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=school"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=school"
@@ -4786,7 +5133,7 @@
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=school"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=school"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=school"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=school"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=school"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=school"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:amenity=school" />
             <space />
@@ -4797,13 +5144,14 @@
         </item> <!-- School -->
         <item name="University" icon="presets/education/university.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=university"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=university"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=university"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=university"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=university"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=university"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=university"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=university"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=university"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=university"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=university"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:amenity=university" />
             <space />
@@ -4813,10 +5161,12 @@
         </item> <!-- University -->
         <item name="College" icon="presets/education/college.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=college"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=college"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=college"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=college"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=college"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=college"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=college"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=college"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=college" />
             <space />
             <key key="amenity" value="college" />
@@ -4825,8 +5175,12 @@
         </item> <!-- College -->
          <item name="Driving School" icon="presets/education/driving_school.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=driving_school"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=driving_school"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=driving_school"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=driving_school"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=driving_school"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=driving_school"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=driving_school"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=driving_school" />
             <space />
             <key key="amenity" value="driving_school" />
@@ -4838,13 +5192,13 @@
     <group name="Health" icon="presets/health/pharmacy.svg">
         <item name="Hospital" icon="presets/health/hospital.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=hospital"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=hospital"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=hospital"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=hospital"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=hospital"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=hospital"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=hospital"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=hospital"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=hospital"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=hospital" />
             <space />
             <key key="amenity" value="hospital" />
@@ -4853,9 +5207,12 @@
         </item> <!-- Hospital -->
         <item name="Clinic" icon="presets/health/clinic.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=clinic"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=clinic"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=clinic"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=clinic"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=clinic"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=clinic"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=clinic"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=clinic" />
             <space />
             <key key="amenity" value="clinic" />
@@ -4864,12 +5221,13 @@
         </item> <!-- Clinic -->
         <item name="Doctor's Office" icon="presets/health/doctors.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=doctors"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=doctors"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=doctors"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=doctors"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=doctors"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=doctors"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=doctors"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=doctors"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=doctors"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=doctors" />
             <space />
             <key key="amenity" value="doctors" />
@@ -4878,10 +5236,12 @@
         </item> <!-- Doctor's Office -->
         <item name="Dentist" icon="presets/health/dentist.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=dentist"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=dentist"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=dentist"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=dentist"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=dentist"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=dentist"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=dentist"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=dentist"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=dentist" />
             <space />
             <key key="amenity" value="dentist" />
@@ -4890,12 +5250,13 @@
         </item> <!-- Dentist -->
         <item name="Pharmacy" icon="presets/health/pharmacy.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=pharmacy"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=pharmacy"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=pharmacy"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=pharmacy"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=pharmacy"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=pharmacy"
-                  no.href="http://wiki.openstreetmap.org/wiki/No:Tag:amenity=pharmacy"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=pharmacy"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=pharmacy"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=pharmacy"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=pharmacy"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:amenity=pharmacy" />
             <space />
@@ -4915,7 +5276,7 @@
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=baby_hatch"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:amenity=baby_hatch"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=baby_hatch"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=baby_hatch"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=baby_hatch"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=baby_hatch" />
             <space />
             <key key="amenity" value="baby_hatch" />
@@ -4925,9 +5286,11 @@
         <separator/>
         <item name="Emergency Access Point" icon="presets/service/emergency_access_point.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=emergency_access_point"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=emergency_access_point"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=emergency_access_point"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=emergency_access_point"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=emergency_access_point"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=emergency_access_point"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=emergency_access_point"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=emergency_access_point" />
             <space />
             <key key="highway" value="emergency_access_point" />
@@ -4948,7 +5311,7 @@
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=veterinary"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=veterinary"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=veterinary"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=veterinary"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=veterinary"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=veterinary" />
             <space />
             <key key="amenity" value="veterinary" />
@@ -4959,8 +5322,11 @@
     <group name="Emergency" icon="presets/emergency/ambulance_station.svg">
         <item name="Ambulance Station" icon="presets/emergency/ambulance_station.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:emergency=ambulance_station"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:emergency=ambulance_station"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:emergency=ambulance_station"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:emergency=ambulance_station"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:emergency=ambulance_station"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:emergency=ambulance_station"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:emergency=ambulance_station"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:emergency=ambulance_station" />
             <space />
             <key key="emergency" value="ambulance_station" />
@@ -4969,6 +5335,7 @@
         </item> <!-- Ambulance Station -->
         <item name="Automated Defibrillator" icon="presets/emergency/aed.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:emergency=defibrillator"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:emergency=defibrillator"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:emergency=defibrillator"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:emergency=defibrillator"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:emergency=defibrillator"
@@ -4992,10 +5359,12 @@
         <separator />
         <item name="Fire Extinguisher" icon="presets/emergency/fire_extinguisher.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:emergency=fire_extinguisher"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:emergency=fire_extinguisher"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:emergency=fire_extinguisher"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:emergency=fire_extinguisher"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:emergency=fire_extinguisher"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:emergency=fire_extinguisher"
-                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:emergency=fire_extinguisher" />
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:emergency=fire_extinguisher" />
             <space />
             <key key="emergency" value="fire_extinguisher" />
             <text key="ref" text="Reference" />
@@ -5004,7 +5373,10 @@
         </item> <!-- Fire Extinguisher -->
         <item name="Fire Hose" icon="presets/emergency/fire_hose.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:emergency=fire_hose"
-                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:emergency=fire_hose" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:emergency=fire_hose"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:emergency=fire_hose"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:emergency=fire_hose"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:emergency=fire_hose" />
             <space />
             <key key="emergency" value="fire_hose" />
             <text key="ref" text="Reference" />
@@ -5012,11 +5384,13 @@
         </item> <!-- Fire Hose -->
         <item name="Fire Hydrant" icon="presets/service/fire_hydrant.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:emergency=fire_hydrant"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:emergency=fire_hydrant"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:emergency=fire_hydrant"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:emergency=fire_hydrant"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:emergency=fire_hydrant"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:emergency=fire_hydrant"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:emergency=fire_hydrant"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:emergency=fire_hydrant"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:emergency=fire_hydrant"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:emergency=fire_hydrant"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:emergency=fire_hydrant" />
             <space />
@@ -5033,9 +5407,11 @@
         </item> <!-- Fire Hydrant -->
         <item name="Water Tank" icon="presets/emergency/water_tank.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:emergency=water_tank"
-                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:emergency=fire_hose"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:emergency=fire_hose"
-                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:emergency=fire_hose" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:emergency=water_tank"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:emergency=water_tank"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:emergency=water_tank"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:emergency=water_tank"
+                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:emergency=water_tank" />
             <space />
             <key key="emergency" value="water_tank" />
             <reference ref="name_ref_operator" />
@@ -5045,6 +5421,7 @@
         <separator />
         <item name="Assembly Point" icon="presets/emergency/assembly_point.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:emergency=assembly_point"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:emergency=assembly_point"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:emergency=assembly_point" />
             <space />
             <key key="emergency" value="assembly_point" />
@@ -5052,18 +5429,21 @@
         </item> <!-- Assembly Point -->
         <item name="Emergency Phone" icon="presets/vehicle/emergency_phone.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:emergency=phone"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:emergency=phone"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:emergency=phone"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:emergency=phone"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:emergency=phone"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:emergency=phone" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:emergency=phone" />
             <key key="emergency" value="phone" />
             <text key="ref" text="Reference" />
             <text key="operator" text="Operator" />
         </item> <!-- Emergency Phone -->
         <item name="Siren" icon="presets/emergency/siren.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:emergency=siren"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:emergency=siren"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:emergency=siren"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:emergency=siren" />
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:emergency=siren"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:emergency=siren" />
             <key key="emergency" value="siren" />
             <text key="ref" text="Reference" />
             <text key="operator" text="Operator" />
@@ -5076,9 +5456,10 @@
     <group name="Social Facility" icon="presets/social_facility/outreach.svg">
         <item name="Nursing Home" icon="presets/social_facility/nursing_home.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=nursing_home"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=nursing_home"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=nursing_home"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=nursing_home"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=nursing_home"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=nursing_home"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=nursing_home" />
             <space />
             <key key="amenity" value="nursing_home" />
@@ -5088,6 +5469,7 @@
         </item> <!-- Nursing Home -->
         <item name="Group Home" icon="presets/social_facility/group_home.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:social_facility"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:social_facility"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:social_facility"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Key:social_facility"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:social_facility"
@@ -5165,11 +5547,12 @@
     <group name="Facilities" icon="presets/service/telephone.svg">
         <item name="Toilets/Restrooms" icon="presets/service/toilets.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=toilets"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=toilets"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=toilets"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=toilets"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=toilets"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:amenity=toilets"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=toilets"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=toilets"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=toilets"
                   zh_TW.href="http://wiki.openstreetmap.org/wiki/Zh-hant:Tag:amenity=toilets" />
             <space />
@@ -5193,7 +5576,9 @@
         </item> <!-- Toilets/Restrooms -->
         <item name="Shower" icon="presets/service/shower.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=shower"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=shower"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=shower"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=shower"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=shower" />
             <space />
             <key key="amenity" value="shower" />
@@ -5213,10 +5598,12 @@
         <separator/>
         <item name="Post Box" icon="presets/service/post_box.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=post_box"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=post_box"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=post_box"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=post_box"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=post_box"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=post_box"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=post_box"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=post_box"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=post_box" />
             <space />
             <key key="amenity" value="post_box" />
@@ -5228,11 +5615,12 @@
         </item> <!-- Post Box -->
         <item name="Telephone" icon="presets/service/telephone.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=telephone"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=telephone"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=telephone"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=telephone"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=telephone"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=telephone"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=telephone"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=telephone"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=telephone" />
             <space />
             <key key="amenity" value="telephone" />
@@ -5244,7 +5632,11 @@
             <preset_link preset_name="Payment Methods" />
         </item> <!-- Telephone -->
         <item name="Internet Cafe" icon="presets/service/internet_cafe.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=internet_cafe" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=internet_cafe"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=internet_cafe"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=internet_cafe"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=internet_cafe"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=internet_cafe" />
             <space />
             <key key="amenity" value="internet_cafe" />
             <reference ref="name_operator_oh_wheelchair" />
@@ -5257,16 +5649,18 @@
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Key:internet_access"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:internet_access"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Key:internet_access"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Key:internet_access"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:internet_access"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Key:internet_access"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:internet_access" />
             <space />
             <reference ref="internet" />
         </item> <!-- Internet Access -->
         <item name="Clock" icon="presets/service/clock.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=clock"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=clock"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=clock"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=clock"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=clock"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=clock"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=clock" />
             <key key="amenity" value="clock" />
             <optional>
@@ -5280,7 +5674,13 @@
             </optional>
         </item> <!-- Clock -->
         <item name="Photo booth" icon="presets/service/photo_booth.svg" type="node" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=photo_booth" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=photo_booth"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=photo_booth"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=photo_booth"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=photo_booth"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=photo_booth"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=photo_booth"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=photo_booth" />
             <space />
             <key key="amenity" value="photo_booth" />
             <reference ref="name_operator_oh_wheelchair" />
@@ -5288,14 +5688,16 @@
         <separator/>
         <item name="Recycling Container" icon="presets/service/recycling/recycling_container.svg" type="node,closedway" preset_name_label="true">
            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=recycling"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=recycling"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=recycling"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=recycling"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=recycling"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=recycling"
+                  gl.href="http://wiki.openstreetmap.org/wiki/Gl:Tag:amenity=recycling"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=recycling"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=recycling"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=recycling"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=recycling"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=recycling"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=recycling"
                   sv.href="http://wiki.openstreetmap.org/wiki/Sv:Tag:amenity=recycling" />
             <space />
@@ -5362,22 +5764,25 @@
         </item> <!-- Recycling Centre-->
         <item name="Waste Basket/Trash Can" icon="presets/service/recycling/waste_basket.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=waste_basket"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=waste_basket"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=waste_basket"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=waste_basket"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=waste_basket"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=waste_basket"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=waste_basket"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:amenity=waste_basket"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=waste_basket"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=waste_basket"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=waste_basket" />
             <key key="amenity" value="waste_basket" />
         </item> <!-- Waste Basket/Trash Can -->
         <item name="Waste Disposal/Dumpster" icon="presets/service/recycling/waste_disposal.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=waste_disposal"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=waste_disposal"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=waste_disposal"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=waste_disposal"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=waste_disposal"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=waste_disposal"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=waste_disposal"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=waste_disposal"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=waste_disposal" />
             <key key="amenity" value="waste_disposal" />
         </item> <!-- Waste Disposal/Dumpster -->
@@ -5399,14 +5804,16 @@
         <separator/>
         <item name="Bench" icon="presets/leisure/bench.svg" type="node,way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bench"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=bench"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=bench"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=bench"
                   et.href="http://wiki.openstreetmap.org/wiki/Et:Tag:amenity=bench"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=bench"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=bench"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=bench"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:amenity=bench"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=bench"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=bench"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=bench"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=bench"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:amenity=bench"
                   zh_TW.href="http://wiki.openstreetmap.org/wiki/Zh-hant:Tag:amenity=bench" />
@@ -5419,11 +5826,13 @@
         </item> <!-- Bench -->
         <item name="Shelter" icon="presets/accommodation/shelter.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=shelter"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=shelter"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=shelter"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=shelter"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=shelter"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=shelter"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=shelter"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=shelter"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=shelter"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=shelter"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:amenity=shelter" />
             <space />
@@ -5441,10 +5850,13 @@
         </item> <!-- Shelter -->
         <item name="Hunting Stand" icon="presets/landmark/hunting_stand.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=hunting_stand"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=hunting_stand"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=hunting_stand"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=hunting_stand"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=hunting_stand"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=hunting_stand"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=hunting_stand" />
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=hunting_stand"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=hunting_stand" />
             <space />
             <key key="amenity" value="hunting_stand" />
             <text key="height" text="Height (meters)" />
@@ -5455,13 +5867,15 @@
         <separator/>
         <item name="Drinking Water" icon="presets/food/drinking_water.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=drinking_water"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=drinking_water"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=drinking_water"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=drinking_water"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=drinking_water"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=drinking_water"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=drinking_water"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:amenity=drinking_water"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=drinking_water"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=drinking_water"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=drinking_water"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=drinking_water" />
             <space />
             <key key="amenity" value="drinking_water" />
@@ -5472,7 +5886,13 @@
             </optional>
         </item> <!-- Drinking Water -->
         <item name="Water Point" icon="presets/accommodation/water.svg" type="node" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=water_point" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=water_point"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=water_point"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=water_point"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=water_point"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=water_point"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=water_point"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=water_point" />
             <space />
             <key key="amenity" value="water_point" />
             <optional>
@@ -5482,7 +5902,13 @@
             </optional>
         </item> <!-- Water Point -->
         <item name="Animal watering place" icon="presets/misc/watering_place.svg" type="node,closedway" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=watering_place" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=watering_place"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=watering_place"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=watering_place"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=watering_place"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=watering_place"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=watering_place"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=watering_place" />
             <space />
             <key key="amenity" value="watering_place" />
             <optional>
@@ -5492,6 +5918,7 @@
         </item> <!-- Animal watering place -->
         <item name="Compressed Air" icon="presets/vehicle/compressed_air.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=compressed_air"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=compressed_air"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=compressed_air"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=compressed_air"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=compressed_air"
@@ -5507,7 +5934,9 @@
         <separator/>
         <item name="Advertising Column" icon="presets/leisure/advertising_column.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:advertising=column"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:advertising=column"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:advertising=column"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:advertising=column"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:advertising=column" />
             <space />
             <key key="advertising" value="column" />
@@ -5516,7 +5945,11 @@
             </optional>
         </item> <!-- Advertising Column -->
         <item name="Billboard" icon="presets/leisure/billboard.svg" type="node" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:advertising=billboard" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:advertising=billboard"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:advertising=billboard"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:advertising=billboard"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:advertising=billboard"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:advertising=billboard" />
             <space />
             <key key="advertising" value="billboard" />
             <optional>
@@ -5529,12 +5962,12 @@
     <group name="Sport Facilities" icon="presets/sport/stadium.svg">
         <item name="Stadium" icon="presets/sport/stadium.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=stadium"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=stadium"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=stadium"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:leisure=stadium"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=stadium"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=stadium"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=stadium"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:leisure=stadium"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:leisure=stadium" />
             <space />
             <key key="leisure" value="stadium" />
@@ -5544,10 +5977,13 @@
         </item> <!-- Stadium -->
         <item name="Sports Centre" icon="presets/sport/sports_centre.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=sports_centre"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=sports_centre"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=sports_centre"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=sports_centre"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:leisure=sports_centre"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=sports_centre"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=sports_centre"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=sports_centre"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:leisure=sports_centre"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:leisure=sports_centre" />
             <space />
             <key key="leisure" value="sports_centre" />
@@ -5557,7 +5993,13 @@
             <preset_link preset_name="Building" />
         </item> <!-- Sports Centre -->
         <item name="Fitness Centre" icon="presets/sport/fitness_centre.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=fitness_centre" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=fitness_centre"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=fitness_centre"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=fitness_centre"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=fitness_centre"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=fitness_centre"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=fitness_centre"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:leisure=fitness_centre" />
             <space />
             <key key="leisure" value="fitness_centre" />
             <text key="name" text="Name" />
@@ -5567,13 +6009,13 @@
         </item> <!-- Fitness Centre -->
         <item name="Pitch" icon="presets/sport/pitch.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=pitch"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=pitch"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=pitch"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=pitch"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:leisure=pitch"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=pitch"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=pitch"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=pitch"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:leisure=pitch"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:leisure=pitch"
                   zh_TW.href="http://wiki.openstreetmap.org/wiki/Zh-hant:Tag:leisure=pitch" />
             <space />
@@ -5585,11 +6027,12 @@
         </item> <!-- Pitch -->
         <item name="Racetrack" icon="presets/sport/track.svg" type="node,way,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=track"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=track"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=track"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:leisure=track"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=track"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=track"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=track"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:leisure=track"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:leisure=track" />
             <space />
             <key key="leisure" value="track" />
@@ -5600,12 +6043,13 @@
         <group name="Golf" icon="presets/sport/golf/golf.svg">
                 <item name="Golf Course" icon="presets/sport/golf/golf.svg" type="node,closedway,multipolygon" preset_name_label="true">
                     <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=golf_course"
-                          de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=golf_course"
-                          es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=golf_course"
-                          fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:leisure=golf_course"
-                          ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=golf_course"
-                          pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=golf_course"
-                          pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:leisure=golf_course" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=golf_course"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=golf_course"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=golf_course"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:leisure=golf_course"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=golf_course"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=golf_course"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=golf_course" />
                     <space />
                     <key key="leisure" value="golf_course" />
                     <reference ref="name_oh_wheelchair" />
@@ -5653,7 +6097,8 @@
             </item> <!-- Pin -->
             <separator/>
             <item name="Bunker" name_context="golf" icon="presets/sport/golf/bunker.svg" type="closedway" preset_name_label="true">
-                <link href="http://wiki.openstreetmap.org/wiki/Tag:golf=bunker" />
+                <link href="http://wiki.openstreetmap.org/wiki/Tag:golf=bunker"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:golf=bunker" />
                 <space />
                 <key key="golf" value="bunker" />
                 <combo key="natural" text="Natural" text_context="golf" values="sand" default="sand" />
@@ -5695,7 +6140,8 @@
                 <key key="golf" value="green" />
             </item> <!-- Green -->
             <item name="Fairway" name_context="golf" icon="presets/sport/golf/fairway.svg" type="closedway,multipolygon" preset_name_label="true">
-                <link href="http://wiki.openstreetmap.org/wiki/Tag:golf=fairway" />
+                <link href="http://wiki.openstreetmap.org/wiki/Tag:golf=fairway"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:golf=fairway" />
                 <space />
                 <key key="golf" value="fairway" />
                 <key key="surface" value="grass" match="keyvalue" />
@@ -5726,10 +6172,13 @@
         </group> <!-- Golf -->
         <item name="Miniature Golf" icon="presets/sport/miniature_golf.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=miniature_golf"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=miniature_golf"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=miniature_golf"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=miniature_golf"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:leisure=miniature_golf"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=miniature_golf"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:leisure=miniature_golf"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=miniature_golf"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=miniature_golf"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:leisure=miniature_golf" />
             <space />
             <key key="leisure" value="miniature_golf" />
@@ -5739,7 +6188,8 @@
     <group name="Sport" icon="presets/sport/multi.svg">
         <item name="Multi" icon="presets/sport/multi.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=multi"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=multi" />
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=multi"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:sport=multi" />
             <space />
             <key key="sport" value="multi" />
             <text key="name" text="Name" />
@@ -5747,6 +6197,7 @@
         </item> <!-- Multi -->
         <item name="Nine-pin Bowling" icon="presets/sport/9pin.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=9pin"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:sport=9pin"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=9pin" />
             <space />
             <key key="sport" value="9pin" />
@@ -5755,6 +6206,8 @@
         </item> <!-- Nine-pin Bowling -->
         <item name="Ten-pin Bowling" icon="presets/sport/10pin.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=10pin"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:sport=10pin"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=10pin"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:sport=10pin" />
             <space />
             <key key="sport" value="10pin" />
@@ -5763,6 +6216,8 @@
         </item> <!-- Ten-pin Bowling -->
         <item name="Archery" icon="presets/sport/archery.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=archery"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:sport=archery"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=archery"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:sport=archery" />
             <space />
             <key key="sport" value="archery" />
@@ -5770,7 +6225,8 @@
             <combo key="leisure" text="Type" values="pitch,sports_centre,stadium" />
         </item> <!-- Archery -->
         <item name="Track and Field Athletics" icon="presets/sport/athletics.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:sports=athletics" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:sports=athletics"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:sport=athletics" />
             <space />
             <key key="sport" value="athletics" />
             <text key="name" text="Name" />
@@ -5787,6 +6243,7 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=climbing"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=climbing"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:sport=climbing"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:sport=climbing"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:sport=climbing" />
             <space />
             <key key="sport" value="climbing" />
@@ -5800,7 +6257,8 @@
             <text key="name" text="Name" />
         </item> <!-- Canoeing/Kayaking -->
         <item name="Cycling" icon="presets/sport/cycling.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=cycling" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=cycling"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:sport=cycling" />
             <space />
             <key key="sport" value="cycling" />
             <text key="name" text="Name" />
@@ -5814,7 +6272,9 @@
             <combo key="leisure" text="Type" values="pitch,sports_centre,stadium,track" values_context="racing" />
         </item> <!-- Dog Racing -->
         <item name="Equestrian" icon="presets/sport/equestrian.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=equestrian" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=equestrian"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=equestrian"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:sport=equestrian" />
             <space />
             <key key="sport" value="equestrian" />
             <text key="name" text="Name" />
@@ -5835,7 +6295,8 @@
             <combo key="leisure" text="Type" values="pitch,sports_centre,fitness_centre,stadium" />
         </item> <!-- Gymnastics -->
         <item name="Ice Skating" icon="presets/sport/ice_skating.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=ice_skating" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=ice_skating"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=ice_skating" />
             <space />
             <key key="sport" value="ice_skating" />
             <text key="name" text="Name" />
@@ -5850,6 +6311,7 @@
         </item> <!-- Roller Skating -->
         <item name="Skateboard" icon="presets/sport/skateboard.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=skateboard"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=skateboard"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:sport=skateboard" />
             <space />
             <key key="sport" value="skateboard" />
@@ -5859,6 +6321,7 @@
         <item name="Swimming" icon="presets/sport/swimming.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=swimming"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=swimming"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:sport=swimming"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:sport=swimming" />
             <space />
             <key key="sport" value="swimming" />
@@ -5889,8 +6352,11 @@
         <item name="Shooting" icon="presets/sport/range.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=shooting"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=shooting"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:sport=shooting"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:sport=shooting"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:sport=shooting"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:sport=shooting"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:sport=shooting"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:sport=shooting" />
             <space />
             <key key="sport" value="shooting" />
@@ -5902,27 +6368,32 @@
         <item name="Soccer" icon="presets/sport/soccer.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=soccer"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=soccer"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:sport=soccer"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:sport=soccer"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:sport=soccer"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:sport=soccer"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:sport=soccer" />
             <space />
             <key key="sport" value="soccer" />
             <reference ref="name_leisure_pitch" />
         </item> <!-- Soccer -->
         <item name="Australian Football" icon="presets/sport/football.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=australian_football" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=australian_football"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:sport=australian_football" />
             <space />
             <key key="sport" value="australian_football" />
             <reference ref="name_leisure_pitch" />
         </item> <!-- Australian Football -->
         <item name="American Football" icon="presets/sport/football.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=american_football" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=american_football"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:sport=american_football"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:sport=american_football" />
             <space />
             <key key="sport" value="american_football" />
             <reference ref="name_leisure_pitch" />
         </item> <!-- American Football -->
         <item name="Canadian Football" icon="presets/sport/football.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=canadian_football" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=canadian_football"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:sport=canadian_football" />
             <space />
             <key key="sport" value="canadian_football" />
             <reference ref="name_leisure_pitch" />
@@ -5954,13 +6425,19 @@
             <reference ref="name_leisure_pitch" />
         </item> <!-- Rugby Union -->
         <item name="Baseball" icon="presets/sport/baseball.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=baseball" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=baseball"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:sport=baseball"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=baseball"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:sport=baseball" />
             <space />
             <key key="sport" value="baseball" />
             <reference ref="name_leisure_pitch" />
         </item> <!-- Baseball -->
         <item name="Basketball" icon="presets/sport/basketball.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=basketball" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=basketball"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:sport=basketball"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=basketball"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:sport=basketball" />
             <space />
             <key key="sport" value="basketball" />
             <reference ref="name_leisure_pitch" />
@@ -5973,21 +6450,25 @@
             <combo key="leisure" text="Type" values="stadium,pitch,sports_centre" />
         </item> <!-- Handball -->
         <item name="Volleyball" icon="presets/sport/volleyball.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=volleyball" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=volleyball"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=volleyball" />
             <space />
             <key key="sport" value="volleyball" />
             <reference ref="name_operator" />
             <combo key="leisure" text="Type" values="stadium,pitch,sports_centre" />
         </item> <!-- Volleyball -->
         <item name="Beach Volleyball" icon="presets/sport/beachvolleyball.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=beachvolleyball" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=beachvolleyball"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:sport=beachvolleyball" />
             <space />
             <key key="sport" value="beachvolleyball" />
             <reference ref="name_operator" />
             <combo key="leisure" text="Type" values="stadium,pitch,sports_centre" />
         </item> <!-- Beach Volleyball -->
         <item name="Billiards" icon="presets/sport/billiards.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=billiards" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=billiards"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:sport=billiards"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:sport=billiards" />
             <space />
             <key key="sport" value="billiards" />
             <reference ref="name_operator" />
@@ -5996,21 +6477,24 @@
         <item name="Golf" icon="presets/sport/golf.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=golf"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=golf"
-                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:sport=golf"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:sport=golf" />
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:sport=golf"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:sport=golf" />
             <space />
             <key key="sport" value="golf" />
             <text key="name" text="Name" />
             <combo key="leisure" text="Type" values="golf_course,pitch,sports_centre,stadium" default="golf_course" />
         </item> <!-- Golf -->
         <item name="Boule" icon="presets/sport/boule.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=boules" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=boules"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:sport=boules"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:sport=boules" />
             <space />
             <key key="sport" value="boules" />
             <reference ref="name_leisure_pitch" />
         </item> <!-- Boule -->
         <item name="Lawn Bowling" icon="presets/sport/boule.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=bowls" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=bowls"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:sport=bowls" />
             <space />
             <key key="sport" value="bowls" />
             <reference ref="name_leisure_pitch" />
@@ -6057,14 +6541,17 @@
             <combo key="leisure" text="Type" values="pitch,sports_centre,stadium" />
         </item> <!-- Racquetball -->
         <item name="Table Tennis/Ping-Pong" icon="presets/sport/table_tennis.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=table_tennis" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=table_tennis"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=table_tennis" />
             <space />
             <key key="sport" value="table_tennis" />
             <text key="name" text="Name" />
             <combo key="leisure" text="Type" values="pitch,sports_centre,stadium" />
         </item> <!-- Table Tennis/Ping-Pong -->
         <item name="Tennis" icon="presets/sport/tennis.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=tennis" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=tennis"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=tennis"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:sport=tennis" />
             <space />
             <key key="sport" value="tennis" />
             <reference ref="name_leisure_pitch" />
@@ -6090,7 +6577,8 @@
         <item name="Motocross" icon="presets/sport/motocross.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=motocross"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=motocross"
-                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:sport=motocross" />
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:sport=motocross"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:sport=motocross" />
             <space />
             <key key="sport" value="motocross" />
             <text key="name" text="Name" />
@@ -6113,9 +6601,7 @@
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:sport"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:sport"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Key:sport"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Key:sport"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:sport"
-                  tr.href="http://wiki.openstreetmap.org/wiki/Tr:Key:sport"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Key:sport" />
             <space />
             <key key="sport" value="rc_car" />
@@ -6128,6 +6614,7 @@
     <group name="Man Made" icon="presets/landmark/works.svg">
         <item name="Building" icon="presets/landmark/building.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:building"
+                  bg.href="http://wiki.openstreetmap.org/wiki/Bg:Key:building"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:building"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:building"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Key:building"
@@ -6136,9 +6623,8 @@
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Key:building"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:building"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Key:building"
-                  no.href="http://wiki.openstreetmap.org/wiki/No:Key:building"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:building"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Key:building"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Key:building"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:building"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Key:building" />
             <space />
@@ -6175,6 +6661,7 @@
         </item> <!-- Residential Building -->
         <item name="Building part" icon="presets/landmark/building.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:building:part"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:building:part"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:building:part"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:building:part"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:building:part"
@@ -6193,6 +6680,8 @@
             <link href="http://wiki.openstreetmap.org/wiki/Key:entrance"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:entrance"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:entrance"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Key:entrance"
+                  fi.href="http://wiki.openstreetmap.org/wiki/Fi:Key:entrance"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:entrance"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:entrance"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:entrance"
@@ -6221,7 +6710,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:man_made=tower"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=tower"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:man_made=tower"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=tower"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=tower"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=tower" />
             <space />
             <key key="man_made" value="tower" />
@@ -6236,8 +6725,9 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=flagpole"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=flagpole"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=flagpole"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:man_made=flagpole"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=flagpole"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=flagpole" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=flagpole" />
             <key key="man_made" value="flagpole" />
         </item> <!-- Flagpole -->
         <separator/>
@@ -6245,9 +6735,10 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=works"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=works"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=works"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:man_made=works"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=works"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:man_made=works"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=works"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=works"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=works" />
             <space />
             <key key="man_made" value="works" />
@@ -6257,7 +6748,8 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=chimney"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=chimney"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=chimney"
-                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=chimney" />
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=chimney"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:man_made=chimney" />
             <space />
             <key key="man_made" value="chimney" />
             <reference ref="name_operator" />
@@ -6268,9 +6760,10 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=windmill"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=windmill"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:man_made=windmill"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=windmill"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:man_made=windmill"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:man_made=windmill"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=windmill"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=windmill"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=windmill" />
             <space />
             <key key="man_made" value="windmill" />
@@ -6279,7 +6772,9 @@
         <item name="Gasometer" icon="presets/landmark/gasometer.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=gasometer"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=gasometer"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=gasometer" />
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=gasometer"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=gasometer"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:man_made=gasometer" />
             <space />
             <key key="man_made" value="gasometer" />
             <optional>
@@ -6289,7 +6784,11 @@
             </optional>
         </item> <!-- Gasometer -->
         <item name="Silo" icon="presets/landmark/silo.svg" type="node,closedway" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=silo" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=silo"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=silo"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=silo"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=silo"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:man_made=silo" />
             <space />
             <key key="man_made" value="silo" />
             <optional>
@@ -6302,6 +6801,9 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=storage_tank"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=storage_tank"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=storage_tank"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:man_made=storage_tank"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=storage_tank"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:man_made=storage_tank"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=storage_tank" />
             <key key="man_made" value="storage_tank" />
             <optional>
@@ -6315,7 +6817,9 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=bunker_silo"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=bunker_silo"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=bunker_silo"
-                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=bunker_silo" />
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=bunker_silo"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:man_made=bunker_silo"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=bunker_silo" />
             <space />
             <key key="man_made" value="bunker_silo" />
             <optional>
@@ -6327,7 +6831,7 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=crane"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=crane"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=crane"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=crane"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=crane"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=crane" />
             <space />
             <key key="man_made" value="crane" />
@@ -6337,8 +6841,9 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=mineshaft"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=mineshaft"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=mineshaft"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:man_made=mineshaft"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=mineshaft"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=mineshaft"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=mineshaft"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=mineshaft" />
             <space />
             <key key="man_made" value="mineshaft" />
@@ -6357,7 +6862,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:man_made=adit"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=adit"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:man_made=adit"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=adit"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=adit"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=adit" />
             <space />
             <key key="man_made" value="adit" />
@@ -6371,6 +6876,8 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=embankment"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=embankment"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=embankment"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:man_made=embankment"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=embankment"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:man_made=embankment"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=embankment"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:man_made=embankment" />
@@ -6382,7 +6889,8 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=pipeline"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=pipeline"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=pipeline"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=pipeline"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=pipeline"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=pipeline"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=pipeline" />
             <space />
             <key key="man_made" value="pipeline" />
@@ -6393,6 +6901,7 @@
         </item> <!-- Pipeline -->
         <item name="Pipeline Marker" icon="presets/misc/pipeline_marker.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:pipeline=marker"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:pipeline=marker"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:pipeline=marker"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:pipeline=marker" />
             <space />
@@ -6403,6 +6912,7 @@
         </item> <!-- Pipeline Marker -->
         <item name="Pipeline Valve" icon="presets/misc/valve.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:pipeline=valve"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:pipeline=valve"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:pipeline=valve" />
             <space />
             <key key="pipeline" value="valve" />
@@ -6416,7 +6926,9 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=water_tower"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:man_made=water_tower"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:man_made=water_tower"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=water_tower"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=water_tower"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:man_made=water_tower"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=water_tower"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=water_tower" />
             <space />
             <key key="man_made" value="water_tower" />
@@ -6431,7 +6943,8 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=water_works"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:man_made=water_works"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:man_made=water_works"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=water_works"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=water_works"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=water_works"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=water_works" />
             <space />
             <key key="man_made" value="water_works" />
@@ -6445,7 +6958,7 @@
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:man_made=wastewater_plant"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:man_made=wastewater_plant"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=wastewater_plant"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=wastewater_plant"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=wastewater_plant"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=wastewater_plant" />
             <space />
             <key key="man_made" value="wastewater_plant" />
@@ -6455,11 +6968,12 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=watermill"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=watermill"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=watermill"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:man_made=watermill"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:man_made=watermill"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:man_made=watermill"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=watermill"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:man_made=watermill"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=watermill"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=watermill"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=watermill" />
             <space />
             <key key="man_made" value="watermill" />
@@ -6467,12 +6981,13 @@
         </item> <!-- Watermill -->
         <item name="Fountain" icon="presets/misc/fountain.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=fountain"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=fountain"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=fountain"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=fountain"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=fountain"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=fountain"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=fountain"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=fountain"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=fountain"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=fountain"
                   zh_TW.href="http://wiki.openstreetmap.org/wiki/Zh-hant:Tag:amenity=fountain" />
             <space />
@@ -6487,7 +7002,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:man_made=water_well"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=water_well"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:man_made=water_well"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=water_well"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=water_well"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=water_well" />
             <space />
             <key key="man_made" value="water_well" />
@@ -6498,8 +7013,9 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=lighthouse"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=lighthouse"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=lighthouse"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:man_made=lighthouse"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=lighthouse"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=lighthouse"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=lighthouse"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=lighthouse" />
             <space />
             <key key="man_made" value="lighthouse" />
@@ -6515,9 +7031,12 @@
         </item> <!-- Beacon -->
         <item name="Street Lamp" icon="presets/misc/streetlamp.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=street_lamp"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=street_lamp"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=street_lamp"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=street_lamp"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=street_lamp"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=street_lamp"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=street_lamp" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=street_lamp" />
             <space />
             <key key="highway" value="street_lamp" />
             <combo key="opening_hours" text="Operation times" values="Mo-Fr 22:00-05:00" values_no_i18n="true" />
@@ -6528,7 +7047,8 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=monitoring_station"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:man_made=monitoring_station"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=monitoring_station"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=monitoring_station"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:man_made=monitoring_station"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=monitoring_station"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=monitoring_station" />
             <space />
             <key key="man_made" value="monitoring_station" />
@@ -6566,7 +7086,8 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=survey_point"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:man_made=survey_point"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=survey_point"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=survey_point"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:man_made=survey_point"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=survey_point"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=survey_point" />
             <space />
             <key key="man_made" value="survey_point" />
@@ -6579,8 +7100,9 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=surveillance"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=surveillance"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:man_made=surveillance"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=surveillance"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:man_made=surveillance"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=surveillance"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=surveillance"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=surveillance" />
             <space />
             <key key="man_made" value="surveillance" />
@@ -6614,7 +7136,7 @@
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Key:bridge"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:bridge"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:bridge"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Key:bridge"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Key:bridge"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:bridge"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Key:bridge"
                   zh_TW.href="http://wiki.openstreetmap.org/wiki/Zh-hant:Key:bridge" />
@@ -6625,15 +7147,21 @@
         </item> <!-- Bridge -->
         <item name="Movable Bridge" icon="presets/transport/bridge/bridge_movable.svg" type="way,relation,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:bridge:movable"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:bridge:movable"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:bridge:movable"
-                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:bridge:movable" />
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:bridge:movable"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:bridge:movable"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:bridge:movable" />
             <space />
             <key key="bridge" value="movable" />
             <combo key="bridge:movable" text="Type" values="bascule,drawbridge,lift,submersible,swing,transporter" match="key" />
             <reference ref="optional_bridge" />
         </item> <!-- Movable Bridge -->
         <item name="Bridge Support" icon="presets/transport/bridge/bridge_support.svg" type="node,closedway" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Key:bridge:support" />
+            <link href="http://wiki.openstreetmap.org/wiki/Key:bridge:support"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:bridge:support"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:bridge:support"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:bridge:support" />
             <space />
             <combo key="bridge:support" text="Type" values="pier,abutment,lift_pier,pivot_pier" match="key" />
         </item> <!-- Bridge Support -->
@@ -6641,6 +7169,7 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=bridge"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=bridge"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=bridge"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:man_made=bridge"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=bridge"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=bridge" />
             <space />
@@ -6653,8 +7182,10 @@
     <group name="Military" name_context="preset group" icon="presets/landuse/military.svg">
         <item name="Airfield" icon="presets/transport/airport/airfield.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:military=airfield"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:military=airfield"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:military=airfield"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:military=airfield"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:military=airfield"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:military=airfield"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:military=airfield" />
             <space />
             <key key="military" value="airfield" match="keyvalue!" />
@@ -6662,8 +7193,9 @@
         </item> <!-- Airfield -->
         <item name="Barracks" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:military=barracks"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:military=barracks"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:military=barracks"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:military=barracks" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:military=barracks" />
             <space />
             <key key="military" value="barracks" />
         </item> <!-- Barracks -->
@@ -6672,8 +7204,9 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:military=bunker"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:military=bunker"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:military=bunker"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:military=bunker"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:military=bunker"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:military=bunker" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:military=bunker" />
             <space />
             <key key="military" value="bunker" />
             <combo key="bunker_type" text="Type" values="pillbox,munitions,hardened_aircraft_shelter" match="key" />
@@ -6684,8 +7217,10 @@
         </item> <!-- Bunker -->
         <item name="Range" icon="presets/sport/range.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:military=range"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:military=range"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:military=range"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:military=range" />
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:military=range"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:military=range" />
             <space />
             <key key="military" value="range" />
         </item> <!-- Range -->
@@ -6696,6 +7231,7 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=plant"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:power=plant"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:power=plant"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:power=plant"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:power=plant" />
             <space />
             <key key="power" value="plant" />
@@ -6877,7 +7413,9 @@
         <item name="Power Substation" icon="presets/power/substation.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:power=substation"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=substation"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:power=substation"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:power=substation"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:power=substation"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:power=substation"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:power=substation" />
             <space />
@@ -6896,6 +7434,7 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=transformer"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:power=transformer"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:power=transformer"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:power=transformer"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:power=transformer"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:power=transformer" />
             <space />
@@ -6908,11 +7447,8 @@
             </optional>
         </item> <!-- Power Transformer -->
         <item name="Power Switchgear" icon="presets/power/switchgear.svg" type="closedway" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:power=switch"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=substation"
-                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:power=substation"
-                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:power=substation"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:power=substation" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:power=switchgear"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=switchgear" />
             <space />
             <label text="(Please only use this tag if more detailed mapping using busbars and bays is impossible!)" />
             <space />
@@ -6925,10 +7461,7 @@
         </item> <!-- Power Switchgear -->
         <item name="Power Busbar" icon="presets/power/busbar.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:line=busbar"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=substation"
-                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:power=substation"
-                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:power=substation"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:power=substation" />
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:line=busbar" />
             <space />
             <key key="power" value="line" />
             <key key="line" value="busbar" />
@@ -6936,10 +7469,7 @@
         </item> <!-- Power Busbar -->
         <item name="Power Bay" icon="presets/power/bay.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:line=bay"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=substation"
-                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:power=substation"
-                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:power=substation"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:power=substation" />
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:line=bay" />
             <space />
             <key key="power" value="line" />
             <key key="line" value="bay" />
@@ -6953,10 +7483,7 @@
         <separator/>
         <item name="Power Converter" icon="presets/power/converter.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:power=converter"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=substation"
-                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:power=substation"
-                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:power=substation"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:power=substation" />
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=converter" />
             <space />
             <key key="power" value="converter" />
             <combo key="converter" text="Type of converter" values="lcc,vsc,back-to-back" match="key" values_context="power" />
@@ -6969,10 +7496,7 @@
         </item> <!-- Power Converter -->
         <item name="Power Compensator" icon="presets/power/compensator.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:power=compensator"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=substation"
-                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:power=substation"
-                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:power=substation"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:power=substation" />
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:power=compensator" />
             <space />
             <key key="power" value="compensator" />
             <combo key="compensator" text="Type of compensator" values="shunt_reactor,shunt_capacitor,static_var,statcom,synchronous_condenser,filter,series_reactor,series_capacitor" match="key" values_context="power" />
@@ -6984,7 +7508,10 @@
         </item> <!-- Power Compensator -->
         <separator/>
         <item name="Power Street Cabinet" icon="presets/power/cable_distribution_cabinet.svg" type="node" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=street_cabinet" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=street_cabinet"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=street_cabinet"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:man_made=street_cabinet"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=street_cabinet" />
             <space />
             <key key="man_made" value="street_cabinet" />
             <key key="street_cabinet" value="power" />
@@ -6993,7 +7520,9 @@
         </item> <!-- Power Street Cabinet -->
         <separator/>
         <item name="Transformer Tower" icon="presets/power/transformer_tower.svg" type="node,closedway" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:building=transformer_tower" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:building=transformer_tower"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:building=transformer_tower"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:building=transformer_tower" />
             <space />
             <key key="building" value="transformer_tower" />
             <text key="height" text="Height (meters)" />
@@ -7002,7 +7531,8 @@
         </item> <!-- Transformer Tower -->
         <item name="Power Portal" icon="presets/power/portal.svg" type="node,way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:power=portal"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=portal" />
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=portal"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:power=portal" />
             <space />
             <key key="power" value="portal" />
             <text key="height" text="Height (meters)" />
@@ -7021,7 +7551,7 @@
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:power=tower"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:power=tower"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:power=tower"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:power=tower"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:power=tower"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:power=tower" />
             <space />
             <key key="power" value="tower" />
@@ -7048,7 +7578,7 @@
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:power=pole"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:power=pole"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:power=pole"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:power=pole"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:power=pole"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:power=pole" />
             <space />
             <key key="power" value="pole" />
@@ -7083,7 +7613,8 @@
             </optional>
         </item> <!-- Pole with Transformer-->
         <item name="Insulator" icon="presets/power/insulator.svg" type="node,way" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:power=insulator" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:power=insulator"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:power=insulator" />
             <space />
             <key key="power" value="insulator" />
             <reference ref="ref_operator_branch" />
@@ -7094,8 +7625,9 @@
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:power=line"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:power=line"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:power=line"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:power=line"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:power=line"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:power=line"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:power=line"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:power=line" />
             <space />
             <combo key="power" text="Line type" values="line,minor_line" default="line" match="keyvalue!" />
@@ -7111,6 +7643,7 @@
         <item name="Power Cable" icon="presets/power/cable.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:power=cable"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=cable"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:power=cable"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:power=cable" />
             <space />
             <key key="power" value="cable" />
@@ -7130,7 +7663,8 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:historic=castle"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:historic=castle"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:historic=castle"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:historic=castle"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:historic=castle"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:historic=castle"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:historic=castle" />
             <space />
             <key key="historic" value="castle" />
@@ -7144,8 +7678,9 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:historic=ruins"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:historic=ruins"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:historic=ruins"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:historic=ruins"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:historic=ruins"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:historic=ruins"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:historic=ruins"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:historic=ruins" />
             <space />
             <key key="historic" value="ruins" />
@@ -7153,23 +7688,26 @@
         </item> <!-- Ruins -->
         <item name="Archaeological Site" icon="presets/sightseeing/archaeological.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:historic=archaeological_site"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:historic=archaeological_site"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:historic=archaeological_site"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:historic=archaeological_site"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:historic=archaeological_site"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:historic=archaeological_site"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:historic=archaeological_site"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:historic=archaeological_site"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:historic=archaeological_site" />
             <space />
             <key key="historic" value="archaeological_site" />
+            <combo key="site_type" text="Type" values="tumulus,megalith,fortification,settlement,necropolis,city" />
             <reference ref="name_oh_wheelchair" />
         </item> <!-- Archaeological Site -->
         <item name="Battlefield" icon="presets/sightseeing/battlefield.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:historic=battlefield"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:historic=battlefield"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:historic=battlefield"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:historic=battlefield"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:historic=battlefield"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:historic=battlefield"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:historic=battlefield"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:historic=battlefield"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:historic=battlefield" />
             <space />
             <key key="historic" value="battlefield" />
@@ -7177,9 +7715,11 @@
         </item> <!-- Battlefield -->
         <item name="Palaeontological Site" icon="presets/sightseeing/palaeontological_site.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:geological=palaeontological_site"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:geological=palaeontological_site"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:geological=palaeontological_site"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:geological=palaeontological_site"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:geological=palaeontological_site"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:geological=palaeontological_site"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:geological=palaeontological_site"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:geological=palaeontological_site" />
             <space />
             <key key="geological" value="palaeontological_site" />
@@ -7188,11 +7728,13 @@
         <separator/>
         <item name="Monument" icon="presets/sightseeing/monument.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:historic=monument"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:historic=monument"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:historic=monument"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:historic=monument"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:historic=monument"
+                  nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:historic=monument"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:historic=monument"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:historic=monument"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:historic=monument"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:historic=monument"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:historic=monument" />
             <space />
@@ -7201,11 +7743,13 @@
         </item> <!-- Monument -->
         <item name="Memorial" icon="presets/sightseeing/memorial.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:historic=memorial"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:historic=memorial"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:historic=memorial"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:historic=memorial"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:historic=memorial"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:historic=memorial"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:historic=memorial"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:historic=memorial"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:historic=memorial"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:historic=memorial"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:historic=memorial" />
             <space />
@@ -7221,9 +7765,12 @@
         </item> <!-- Memorial -->
         <item name="Wayside Cross" icon="presets/religion/wayside_cross.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:historic=wayside_cross"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:historic=wayside_cross"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:historic=wayside_cross"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:historic=wayside_cross"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:historic=wayside_cross"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:historic=wayside_cross"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:historic=wayside_cross"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:historic=wayside_cross"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:historic=wayside_cross"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:historic=wayside_cross" />
             <space />
@@ -7236,12 +7783,13 @@
         </item> <!-- Wayside Cross -->
         <item name="Wayside Shrine" icon="presets/religion/wayside_shrine.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:historic=wayside_shrine"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:historic=wayside_shrine"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:historic=wayside_shrine"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:historic=wayside_shrine"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:historic=wayside_shrine"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:historic=wayside_shrine"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:historic=wayside_shrine"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:historic=wayside_shrine"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:historic=wayside_shrine"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:historic=wayside_shrine" />
             <space />
             <key key="historic" value="wayside_shrine" />
@@ -7255,10 +7803,11 @@
         </item> <!-- Wayside Shrine -->
         <item name="Boundary Stone" icon="presets/landmark/boundary_stone.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:historic=boundary_stone"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:historic=boundary_stone"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:historic=boundary_stone"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:historic=boundary_stone"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:historic=boundary_stone"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:historic=boundary_stone"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:historic=boundary_stone"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:historic=boundary_stone" />
             <space />
             <key key="historic" value="boundary_stone" />
@@ -7270,12 +7819,13 @@
     <group name="Food" icon="presets/shop/supermarket.svg">
         <item name="Supermarket" icon="presets/shop/supermarket.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=supermarket"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=supermarket"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=supermarket"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=supermarket"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=supermarket"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=supermarket"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=supermarket"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=supermarket"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=supermarket"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=supermarket" />
             <space />
             <key key="shop" value="supermarket" />
@@ -7284,12 +7834,14 @@
         </item> <!-- Supermarket -->
         <item name="Convenience Store" icon="presets/shop/convenience.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=convenience"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=convenience"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=convenience"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=convenience"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=convenience"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=convenience"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=convenience"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=convenience"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=convenience"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=convenience"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=convenience" />
             <space />
             <key key="shop" value="convenience" />
@@ -7298,12 +7850,14 @@
         </item> <!-- Convenience Store -->
         <item name="Kiosk" icon="presets/shop/kiosk.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=kiosk"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=kiosk"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=kiosk"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=kiosk"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=kiosk"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=kiosk"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=kiosk"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=kiosk"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=kiosk"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=kiosk"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=kiosk" />
             <space />
             <key key="shop" value="kiosk" />
@@ -7313,7 +7867,7 @@
         <separator/>
         <item name="Bakery" icon="presets/shop/groceries/bakery.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=bakery"
-                  ar.href="http://wiki.openstreetmap.org/wiki/Ar:Tag:shop=bakery"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=bakery"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=bakery"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=bakery"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:shop=bakery"
@@ -7321,7 +7875,7 @@
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=bakery"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=bakery"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=bakery"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=bakery"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=bakery"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=bakery" />
             <space />
             <key key="shop" value="bakery" />
@@ -7330,13 +7884,15 @@
         </item> <!-- Bakery -->
         <item name="Butcher" icon="presets/shop/groceries/butcher.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=butcher"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=butcher"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=butcher"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=butcher"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:shop=butcher"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=butcher"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=butcher"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=butcher"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=butcher"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=butcher"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=butcher"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=butcher" />
             <space />
             <key key="shop" value="butcher" />
@@ -7345,10 +7901,12 @@
         </item> <!-- Butcher -->
         <item name="Seafood" icon="presets/shop/groceries/seafood.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=seafood"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=seafood"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=seafood"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=seafood"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=seafood"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=seafood"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=seafood"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=seafood"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=seafood" />
             <space />
             <key key="shop" value="seafood" />
@@ -7357,7 +7915,9 @@
         </item> <!-- Seafood -->
         <item name="Dairy" icon="presets/shop/groceries/dairy.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=dairy"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=dairy"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=dairy"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=dairy"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=dairy" />
             <space />
             <key key="shop" value="dairy" />
@@ -7366,11 +7926,12 @@
         </item> <!-- Dairy -->
         <item name="Deli (Fine Food)" icon="presets/shop/groceries/deli.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=deli"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=deli"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=deli"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=deli"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=deli"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=deli"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=deli"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=deli"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=deli" />
             <space />
             <key key="shop" value="deli" />
@@ -7378,7 +7939,14 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Deli (Fine Food) -->
         <item name="Pastry" icon="presets/shop/groceries/pastry.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=pastry" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=pastry"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=pastry"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=pastry"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=pastry"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=pastry"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=pastry"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=pastry"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=pastry" />
             <space />
             <key key="shop" value="pastry" />
             <reference ref="name_oh_wheelchair" />
@@ -7386,13 +7954,14 @@
         </item> <!-- Pastry -->
         <item name="Confectionery" icon="presets/shop/groceries/confectionery.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=confectionery"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=confectionery"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=confectionery"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=confectionery"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=confectionery"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=confectionery"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=confectionery"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=confectionery"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=confectionery"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=confectionery"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=confectionery" />
             <space />
             <key key="shop" value="confectionery" />
@@ -7401,8 +7970,11 @@
         </item> <!-- Confectionery -->
         <item name="Tea" icon="presets/shop/groceries/tea.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=tea"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=tea"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=tea"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=tea"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=tea"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=tea"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=tea" />
             <space />
             <key key="shop" value="tea" />
@@ -7411,8 +7983,11 @@
         </item> <!-- Tea -->
         <item name="Coffee" icon="presets/shop/groceries/coffee.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=coffee"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=coffee"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=coffee"
-                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=coffee" />
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=coffee"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=coffee"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=coffee" />
             <space />
             <key key="shop" value="coffee" />
             <reference ref="name_oh_wheelchair" />
@@ -7421,13 +7996,12 @@
         <separator/>
         <item name="Public Market" icon="presets/shop/marketplace.svg" type="node,way,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=marketplace"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=marketplace"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=marketplace"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=marketplace"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=marketplace"
-                  no.href="http://wiki.openstreetmap.org/wiki/No:Tag:amenity=marketplace"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=marketplace"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=marketplace"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=marketplace"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=marketplace" />
             <space />
             <key key="amenity" value="marketplace" />
@@ -7437,11 +8011,12 @@
         </item> <!-- Public Market -->
         <item name="Greengrocer" icon="presets/shop/groceries/greengrocer.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=greengrocer"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=greengrocer"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=greengrocer"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=greengrocer"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=greengrocer"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:shop=greengrocer"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=greengrocer"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=greengrocer"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=greengrocer" />
             <space />
             <key key="shop" value="greengrocer" />
@@ -7451,10 +8026,12 @@
         </item> <!-- Greengrocer -->
         <item name="Farm Stand" icon="presets/shop/groceries/farm.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=farm"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=farm"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=farm"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=farm"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=farm"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=farm"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=farm"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=farm"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=farm" />
             <space />
             <key key="shop" value="farm" />
@@ -7466,27 +8043,32 @@
         <separator/>
         <item name="Organic" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:organic"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:organic"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:organic"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Key:organic"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Key:organic"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:organic" />
             <space />
             <combo text="Organic/Bio" key="organic" values="only,yes,no" match="key" />
         </item> <!-- Organic -->
         <item name="Fair Trade" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:fair_trade"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Key:fair_trade" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:fair_trade"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Key:fair_trade"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Key:fair_trade" />
             <space />
             <combo text="Fair Trade" key="fair_trade" values="no,yes,only" match="key" />
         </item> <!-- Fair Trade -->
         <separator/>
         <item name="Alcohol" icon="presets/shop/alcohol.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=alcohol"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=alcohol"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=alcohol"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=alcohol"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=alcohol"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=alcohol"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=alcohol"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=alcohol"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=alcohol"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=alcohol" />
             <space />
             <key key="shop" value="alcohol" />
@@ -7495,10 +8077,12 @@
         </item> <!-- Alcohol -->
         <item name="Beverages" icon="presets/shop/beverages.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=beverages"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=beverages"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=beverages"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=beverages"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=beverages"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=beverages"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=beverages"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=beverages"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=beverages" />
             <space />
             <key key="shop" value="beverages" />
@@ -7507,8 +8091,10 @@
         </item> <!-- Beverages -->
         <item name="Wine" icon="presets/shop/wine.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=wine"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=wine"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=wine"
-                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=wine" />
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=wine"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=wine" />
             <space />
             <key key="shop" value="wine" />
             <reference ref="name_oh_wheelchair" />
@@ -7518,13 +8104,14 @@
     <group name="Clothes" icon="presets/shop/clothes.svg">
         <item name="Clothes" icon="presets/shop/clothes.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=clothes"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=clothes"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=clothes"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=clothes"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=clothes"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=clothes"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=clothes"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=clothes"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=clothes"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=clothes"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=clothes" />
             <space />
             <key key="shop" value="clothes" />
@@ -7535,10 +8122,12 @@
         </item> <!-- Clothes -->
         <item name="Boutique" icon="presets/shop/boutique.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=boutique"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=boutique"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=boutique"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=boutique"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=boutique"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=boutique"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=boutique"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=boutique"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=boutique" />
             <space />
             <key key="shop" value="boutique" />
@@ -7547,8 +8136,11 @@
         </item> <!-- Boutique -->
         <item name="Shoes" icon="presets/shop/shoes.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=shoes"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=shoes"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=shoes"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=shoes"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=shoes"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=shoes"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=shoes"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=shoes" />
             <space />
             <key key="shop" value="shoes" />
@@ -7559,9 +8151,11 @@
         </item> <!-- Shoes -->
         <item name="Outdoor" icon="presets/shop/outdoor.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=outdoor"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=outdoor"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=outdoor"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=outdoor"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=outdoor"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=outdoor"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=outdoor"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=outdoor" />
             <space />
             <key key="shop" value="outdoor" />
@@ -7570,8 +8164,10 @@
         </item> <!-- Outdoor -->
         <item name="Sports" icon="presets/sport/multi.svg" type="node,closedway,multipolygon" preset_name_label="true">
              <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=sports"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=sports"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=sports"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=sports"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=sports"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=sports"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=sports" />
             <space />
             <key key="shop" value="sports" />
@@ -7581,10 +8177,11 @@
         <separator/>
         <item name="Dry Cleaning" icon="presets/shop/laundry.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=dry_cleaning"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=dry_cleaning"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=dry_cleaning"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:shop=dry_cleaning"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=dry_cleaning"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=dry_cleaning"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=dry_cleaning"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=dry_cleaning" />
             <space />
             <key key="shop" value="dry_cleaning" />
@@ -7593,8 +8190,11 @@
         </item> <!-- Dry Cleaning -->
         <item name="Laundry" icon="presets/shop/laundry.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=laundry"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=laundry"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=laundry"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=laundry"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=laundry"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=laundry"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=laundry"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=laundry" />
             <space />
             <key key="shop" value="laundry" />
@@ -7603,6 +8203,7 @@
         </item> <!-- Laundry -->
         <item name="Tailor" icon="presets/shop/tailor.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=tailor"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=tailor"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=tailor" />
             <space />
             <key key="shop" value="tailor" />
@@ -7611,8 +8212,10 @@
         </item> <!-- Tailor -->
         <item name="Fabric" icon="presets/shop/fabric.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=fabric"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=fabric"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=fabric"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=fabric"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=fabric"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=fabric"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=fabric" />
             <space />
             <key key="shop" value="fabric" />
@@ -7623,9 +8226,11 @@
     <group name="Electronic" icon="presets/shop/electronics.svg">
         <item name="Computer" icon="presets/shop/computer.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=computer"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=computer"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=computer"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=computer"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=computer"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=computer"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=computer"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=computer" />
             <space />
             <key key="shop" value="computer" />
@@ -7634,8 +8239,11 @@
         </item> <!-- Computer -->
         <item name="Electronics" icon="presets/shop/electronics.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=electronics"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=electronics"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=electronics"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=electronics"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=electronics"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=electronics"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=electronics"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=electronics" />
             <space />
             <key key="shop" value="electronics" />
@@ -7644,8 +8252,11 @@
         </item> <!-- Computer -->
         <item name="Mobile Phone" icon="presets/shop/mobile_phone.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=mobile_phone"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=mobile_phone"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=mobile_phone"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=mobile_phone"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=mobile_phone"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=mobile_phone"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=mobile_phone"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=mobile_phone" />
             <space />
             <key key="shop" value="mobile_phone" />
@@ -7654,7 +8265,9 @@
         </item> <!-- Mobile Phone -->
         <item name="Vacuum Cleaner" icon="presets/shop/vacuum_cleaner.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=vacuum_cleaner"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=vacuum_cleaner"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=vacuum_cleaner"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=vacuum_cleaner"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=vacuum_cleaner"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=vacuum_cleaner" />
             <space />
             <key key="shop" value="vacuum_cleaner" />
@@ -7663,9 +8276,11 @@
         </item> <!-- Vacuum Cleaner -->
         <item name="Hifi" icon="presets/shop/hifi.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=hifi"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=hifi"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=hifi"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=hifi"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=hifi"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=hifi"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=hifi"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=hifi" />
             <space />
             <key key="shop" value="hifi" />
@@ -7674,9 +8289,11 @@
         </item> <!-- Hifi -->
         <item name="Video" icon="presets/shop/video.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=video"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=video"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=video"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=video"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=video"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=video"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=video"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=video" />
             <space />
             <key key="shop" value="video" />
@@ -7684,7 +8301,9 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Video -->
         <item name="Video Games" icon="presets/shop/video_games.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=video_games" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=video_games"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=video_games"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=video_games" />
             <space />
             <key key="shop" value="video_games" />
             <reference ref="name_oh_wheelchair" />
@@ -7692,7 +8311,9 @@
         </item> <!-- Video Games -->
         <item name="Music" icon="presets/shop/music.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=music"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=music"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=music"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=music"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=music" />
             <space />
             <key key="shop" value="music" />
@@ -7705,13 +8326,13 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bank"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=bank"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=bank"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=bank"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=bank"
-                  hr.href="http://wiki.openstreetmap.org/wiki/Hr:Tag:amenity=bank"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=bank"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=bank"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:amenity=bank"
-                  no.href="http://wiki.openstreetmap.org/wiki/No:Tag:amenity=bank"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=bank"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=bank"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=bank"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=bank" />
             <space />
             <key key="amenity" value="bank" />
@@ -7723,10 +8344,11 @@
         </item> <!-- Bank -->
         <item name="Money Exchange" icon="presets/money/exchange.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bureau_de_change"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=bureau_de_change"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=bureau_de_change"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=bureau_de_change"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=bureau_de_change"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=bureau_de_change"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=bureau_de_change"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=bureau_de_change" />
             <space />
             <key key="amenity" value="bureau_de_change" />
@@ -7740,10 +8362,9 @@
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=atm"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=atm"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=atm"
-                  hr.href="http://wiki.openstreetmap.org/wiki/Hr:Tag:amenity=atm"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=atm"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=atm"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=atm"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=atm"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=atm"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:amenity=atm" />
             <space />
@@ -7754,8 +8375,10 @@
         </item> <!-- Automated Teller Machine -->
         <item name="Pawnbroker" icon="presets/shop/pawnbroker.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=pawnbroker"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=pawnbroker"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=pawnbroker"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=pawnbroker"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=pawnbroker"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=pawnbroker"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=pawnbroker" />
             <space />
             <key key="shop" value="pawnbroker" />
@@ -7766,10 +8389,12 @@
     <group name="Home decoration" icon="presets/shop/interior_decoration.svg">
         <item name="Furniture" icon="presets/shop/furniture.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=furniture"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=furniture"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=furniture"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=furniture"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=furniture"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=furniture"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=furniture"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=furniture"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=furniture" />
             <space />
             <key key="shop" value="furniture" />
@@ -7778,10 +8403,12 @@
         </item> <!-- Furniture -->
         <item name="Kitchen" icon="presets/shop/kitchen.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=kitchen"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=kitchen"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=kitchen"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=kitchen"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=kitchen"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=kitchen"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=kitchen"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=kitchen"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=kitchen" />
             <space />
             <key key="shop" value="kitchen" />
@@ -7790,8 +8417,10 @@
         </item> <!-- Kitchen -->
         <item name="Houseware" icon="presets/shop/houseware.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=houseware"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=houseware"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=houseware"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=houseware"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=houseware"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=houseware"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=houseware" />
             <space />
@@ -7801,8 +8430,10 @@
         </item> <!-- Houseware -->
         <item name="Curtain" icon="presets/shop/curtain.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=curtain"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=curtain"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=curtain"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=curtain"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=curtain"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=curtain"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=curtain" />
             <space />
             <key key="shop" value="curtain" />
@@ -7811,9 +8442,10 @@
         </item> <!-- Curtain -->
         <item name="Art" icon="presets/shop/art.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=art"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=art"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=art"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=art"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=art"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=art"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=art" />
             <space />
             <key key="shop" value="art" />
@@ -7822,9 +8454,11 @@
         </item> <!-- Art -->
         <item name="Frame" icon="presets/shop/frame.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=frame"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=frame"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=frame"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=frame"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=frame"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=frame"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=frame"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=frame" />
             <space />
             <key key="shop" value="frame" />
@@ -7833,10 +8467,13 @@
         </item> <!-- Frame -->
         <item name="Bed" icon="presets/shop/bed.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=bed"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=bed"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=bed"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=bed"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=bed"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=bed"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=bed"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=bed"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=bed"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=bed" />
             <space />
             <key key="shop" value="bed" />
@@ -7845,8 +8482,10 @@
         </item> <!-- Bed -->
         <item name="Interior Decoration" icon="presets/shop/interior_decoration.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=interior_decoration"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=interior_decoration"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=interior_decoration"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=interior_decoration"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=interior_decoration"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=interior_decoration"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=interior_decoration" />
             <space />
             <key key="shop" value="interior_decoration" />
@@ -7855,6 +8494,7 @@
         </item> <!-- Interior Decoration -->
         <item name="Antiques" icon="presets/shop/antique.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=antiques"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=antiques"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=antiques"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=antiques"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=antiques"
@@ -7868,9 +8508,11 @@
     <group name="Printed Material" icon="presets/shop/stationery.svg">
         <item name="Stationery" icon="presets/shop/stationery.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=stationery"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=stationery"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=stationery"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=stationery"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=stationery"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=stationery"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=stationery"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=stationery" />
             <space />
             <key key="shop" value="stationery" />
@@ -7879,9 +8521,11 @@
         </item> <!-- Stationery -->
         <item name="Copy Shop" icon="presets/shop/copyshop.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=copyshop"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=copyshop"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=copyshop"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=copyshop"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=copyshop"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=copyshop"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=copyshop"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=copyshop" />
             <space />
             <key key="shop" value="copyshop" />
@@ -7890,10 +8534,11 @@
         </item> <!-- Copy Shop -->
         <item name="Book Store" icon="presets/shop/book.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=books"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=books"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=books"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=books"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=books"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=books"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=books"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=books" />
             <space />
             <key key="shop" value="books" />
@@ -7903,10 +8548,12 @@
         </item> <!-- Book Store -->
         <item name="Newspaper Stand" icon="presets/shop/news.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=newsagent"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=newsagent"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=newsagent"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=newsagent"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=newsagent"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=newsagent"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=newsagent"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=newsagent"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=newsagent" />
             <space />
             <key key="shop" value="newsagent" />
@@ -7915,7 +8562,11 @@
         </item> <!-- Newspaper Stand -->
         <item name="Ticket" icon="presets/shop/ticket.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=ticket"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=ticket"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=ticket"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=ticket"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=ticket"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=ticket"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=ticket"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=ticket" />
             <space />
@@ -7927,11 +8578,12 @@
     <group name="For the body" icon="presets/shop/body.svg">
         <item name="Chemist" icon="presets/shop/chemist.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=chemist"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=chemist"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=chemist"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=chemist"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=chemist"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=chemist"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=chemist"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=chemist"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=chemist" />
             <space />
             <key key="shop" value="chemist" />
@@ -7939,14 +8591,22 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Chemist -->
         <item name="Cosmetics" icon="presets/shop/cosmetics.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=cosmetics" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=cosmetics"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=cosmetics"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=cosmetics"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=cosmetics"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=cosmetics" />
             <space />
             <key key="shop" value="cosmetics" />
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Cosmetics -->
         <item name="Perfumery" icon="presets/shop/perfumery.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=perfumery" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=perfumery"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=perfumery"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=perfumery"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=perfumery"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=perfumery" />
             <space />
             <key key="shop" value="perfumery" />
             <reference ref="name_oh_wheelchair" />
@@ -7954,11 +8614,13 @@
         </item> <!-- Perfumery -->
         <item name="Beauty" icon="presets/shop/beauty.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=beauty"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=beauty"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=beauty"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=beauty"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=beauty"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=beauty"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=beauty"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=beauty"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=beauty"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=beauty" />
             <space />
             <key key="shop" value="beauty" />
@@ -7966,7 +8628,13 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Beauty -->
         <item name="Tobacco" icon="presets/shop/tobacco.svg" type="node,closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=tobacco" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=tobacco"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=tobacco"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=tobacco"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=tobacco"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=tobacco"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=tobacco"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=tobacco" />
             <space />
             <key key="shop" value="tobacco" />
             <reference ref="name_operator_oh_wheelchair" />
@@ -7974,11 +8642,12 @@
         </item> <!-- Tobacco -->
         <item name="Hairdresser/Barber" icon="presets/shop/hairdresser.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=hairdresser"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=hairdresser"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=hairdresser"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=hairdresser"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=hairdresser"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=hairdresser"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=hairdresser"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=hairdresser"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=hairdresser" />
             <space />
             <key key="shop" value="hairdresser" />
@@ -7992,9 +8661,11 @@
         </item> <!-- Hairdresser/Barber -->
         <item name="Tattoo" icon="presets/shop/tattoo.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=tattoo"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=tattoo"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=tattoo"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=tattoo"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=tattoo"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=tattoo"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=tattoo"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=tattoo" />
             <space />
             <key key="shop" value="tattoo" />
@@ -8003,8 +8674,12 @@
         </item> <!-- Tattoo -->
         <item name="Optician" icon="presets/shop/optician.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=optician"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=optician"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=optician"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=optician"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=optician"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=optician"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=optician"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=optician"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=optician"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:shop=optician" />
             <space />
@@ -8014,8 +8689,11 @@
         </item> <!-- Optician -->
         <item name="Hearing Aids" icon="presets/shop/hearing_aids.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=hearing_aids"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=hearing_aids"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=hearing_aids"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=hearing_aids"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=hearing_aids"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=hearing_aids"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=hearing_aids"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=hearing_aids" />
             <space />
             <key key="shop" value="hearing_aids" />
@@ -8024,8 +8702,11 @@
         </item> <!-- Hearing Aids -->
         <item name="Medical Supply" icon="presets/shop/medical_supply.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=medical_supply"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=medical_supply"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=medical_supply"
-                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=medical_supply" />
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=medical_supply"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=medical_supply"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=medical_supply" />
             <space />
             <key key="shop" value="medical_supply" />
             <reference ref="name_operator_oh_wheelchair" />
@@ -8034,9 +8715,11 @@
         </item> <!-- Medical Supply -->
         <item name="Jewellery" icon="presets/shop/jewelry.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=jewelry"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=jewelry"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=jewelry"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=jewelry"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=jewelry"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=jewelry"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=jewelry"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=jewelry" />
             <space />
             <key key="shop" value="jewelry" />
@@ -8045,8 +8728,11 @@
         </item> <!-- Jewellery -->
         <item name="Erotic" icon="presets/shop/erotic.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=erotic"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=erotic"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=erotic"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=erotic"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=erotic"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=erotic"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=erotic"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=erotic" />
             <space />
             <key key="shop" value="erotic" />
@@ -8057,11 +8743,13 @@
     <group name="Other" icon="presets/shop/mall.svg">
         <item name="Department Store" icon="presets/shop/mall.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=department_store"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=department_store"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=department_store"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=department_store"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=department_store"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:shop=department_store"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=department_store"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=department_store"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=department_store"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=department_store" />
             <space />
             <key key="shop" value="department_store" />
@@ -8070,10 +8758,12 @@
         </item> <!-- Department Store -->
         <item name="Mall" icon="presets/shop/mall.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=mall"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=mall"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=mall"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=mall"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=mall"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=mall"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=mall"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=mall"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=mall" />
             <space />
             <key key="shop" value="mall" />
@@ -8083,11 +8773,14 @@
         <separator/>
         <item name="Florist" icon="presets/shop/florist.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=florist"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=florist"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=florist"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=florist"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=florist"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=florist"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=florist"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=florist"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=florist"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=florist"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=florist" />
             <space />
             <key key="shop" value="florist" />
@@ -8096,11 +8789,13 @@
         </item> <!-- Florist -->
         <item name="Garden Centre" icon="presets/shop/garden_centre.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=garden_centre"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=garden_centre"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=garden_centre"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=garden_centre"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=garden_centre"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=garden_centre"
-                  ko.href="http://wiki.openstreetmap.org/wiki/Ko:Tag:shop=garden_centre"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=garden_centre"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=garden_centre"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=garden_centre"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=garden_centre" />
             <space />
             <key key="shop" value="garden_centre" />
@@ -8110,11 +8805,12 @@
         <separator/>
         <item name="Do-It-Yourself Store" icon="presets/shop/diy_store.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=doityourself"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=doityourself"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=doityourself"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=doityourself"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=doityourself"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=doityourself"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=doityourself"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=doityourself"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=doityourself" />
             <space />
             <key key="shop" value="doityourself" />
@@ -8123,9 +8819,12 @@
         </item> <!-- Do-It-Yourself Store -->
         <item name="Hardware" icon="presets/shop/hardware.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=hardware"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=hardware"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=hardware"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=hardware"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=hardware"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=hardware"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=hardware"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=hardware"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=hardware" />
             <space />
             <key key="shop" value="hardware" />
@@ -8134,9 +8833,11 @@
         </item> <!-- Hardware -->
         <item name="Paint" icon="presets/shop/paint.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=paint"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=paint"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=paint"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=paint"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=paint"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=paint"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=paint"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=paint" />
             <space />
             <key key="shop" value="paint" />
@@ -8146,7 +8847,9 @@
         <separator/>
         <item name="Travel Agency" icon="presets/shop/travel_agency.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=travel_agency"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=travel_agency"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=travel_agency"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=travel_agency"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=travel_agency"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=travel_agency" />
             <space />
@@ -8156,8 +8859,10 @@
         </item> <!-- Travel Agency -->
         <item name="Musical Instrument" icon="presets/shop/musical_instrument.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=musical_instrument"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=musical_instrument"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=musical_instrument"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=musical_instrument"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=musical_instrument"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=musical_instrument"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=musical_instrument" />
             <space />
             <key key="shop" value="musical_instrument" />
@@ -8166,9 +8871,11 @@
         </item> <!-- Musical Instrument -->
         <item name="Toys" icon="presets/shop/toys.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=toys"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=toys"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=toys"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=toys"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=toys"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=toys"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=toys"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=toys" />
             <space />
             <key key="shop" value="toys" />
@@ -8177,11 +8884,11 @@
         </item> <!-- Toys -->
         <item name="Gift/Souvenir" icon="presets/shop/present.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=gift"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=gift"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=gift"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=gift"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=gift"
-                  ko.href="http://wiki.openstreetmap.org/wiki/Ko:Tag:shop=gift"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=gift"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=gift"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=gift" />
             <space />
             <key key="shop" value="gift" />
@@ -8194,10 +8901,11 @@
         </item> <!-- Gift/Souvenir -->
         <item name="Variety Store" icon="presets/shop/variety_store.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=variety_store"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=variety_store"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=variety_store"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=variety_store"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=variety_store"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=variety_store"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=variety_store"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=variety_store" />
             <space />
             <key key="shop" value="variety_store" />
@@ -8206,7 +8914,9 @@
         </item> <!-- Variety Store -->
         <item name="Bookmaker" icon="presets/shop/lottery.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=bookmaker"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=bookmaker" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=bookmaker"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=bookmaker"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=bookmaker" />
             <space />
             <key key="shop" value="bookmaker" />
             <reference ref="name_operator_oh_wheelchair" />
@@ -8214,7 +8924,9 @@
         </item> <!-- Bookmaker -->
         <item name="Lottery" icon="presets/shop/lottery.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=lottery"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=lottery"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=lottery"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=lottery"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=lottery" />
             <space />
             <key key="shop" value="lottery" />
@@ -8223,7 +8935,9 @@
         </item> <!-- Lottery -->
         <item name="Bag" icon="presets/shop/bag.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=bag"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=bag"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=bag"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=bag"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=bag" />
             <space />
             <key key="shop" value="bag" />
@@ -8232,10 +8946,12 @@
         </item> <!-- Bag -->
         <item name="Pet" icon="presets/shop/pet.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=pet"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=pet"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=pet"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=pet"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=pet"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=pet"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=pet"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=pet"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=pet" />
             <space />
             <key key="shop" value="pet" />
@@ -8244,8 +8960,10 @@
         </item> <!-- Pet -->
         <item name="Photo" icon="presets/shop/photo.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=photo"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=photo"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=photo"
-                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=photo" />
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=photo"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=photo" />
             <space />
             <key key="shop" value="photo" />
             <reference ref="name_oh_wheelchair" />
@@ -8253,10 +8971,13 @@
         </item> <!-- Photo -->
         <item name="Funeral Directors" icon="presets/shop/funeral_directors.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=funeral_directors"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=funeral_directors"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=funeral_directors"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=funeral_directors"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=funeral_directors"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=funeral_directors"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=funeral_directors"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=funeral_directors"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=funeral_directors"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=funeral_directors"
                   zh_TW.href="http://wiki.openstreetmap.org/wiki/Zh-hant:Tag:shop=funeral_directors" />
             <space />
@@ -8280,11 +9001,12 @@
     </item> <!-- Vending Machine -->
     <item name="Payment Methods" icon="presets/money/dollar.svg" type="node,way,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Key:payment"
-              de.href="http://wiki.openstreetmap.org/wiki/DE:Key:payment"
-              es.href="http://wiki.openstreetmap.org/wiki/ES:Key:payment"
-              fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:payment"
-              ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:payment"
-              ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:payment" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:payment"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Key:payment"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Key:payment"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:payment"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:payment"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:payment" />
         <space />
         <combo key="payment:cash" text="Cash" values="yes,no" match="keyvalue" />
         <checkgroup columns="4">
@@ -8340,10 +9062,12 @@
   <group name="Offices" icon="presets/office/private_company.svg">
     <item name="Accountant" icon="presets/office/accountant.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=accountant"
-              de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=accountant"
-              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=accountant"
-              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=accountant"
-              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=accountant" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:office=accountant"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=accountant"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:office=accountant"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:office=accountant"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=accountant"
+                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=accountant" />
         <space />
         <key key="office" value="accountant" />
         <reference ref="name_operator_oh_wheelchair" />
@@ -8351,16 +9075,20 @@
     </item> <!-- Accountant -->
     <item name="Administrative" icon="presets/office/administrative.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=administrative"
-              de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=administrative"
-              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=administrative"
-              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=administrative" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:office=administrative"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=administrative"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:office=administrative"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:office=administrative"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=administrative" />
         <space />
         <key key="office" value="administrative" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Administrative -->
     <item name="Advertising agency" icon="presets/office/advertising_agency.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:office=advertising_agency" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:office=advertising_agency"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:office=advertising_agency"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=advertising_agency" />
         <space />
         <key key="office" value="advertising_agency" />
         <reference ref="name_operator_oh_wheelchair" />
@@ -8368,16 +9096,21 @@
     </item> <!-- Advertising agency -->
     <item name="Architect" icon="presets/office/architect.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=architect"
-              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=architect"
-              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=architect"
-              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=architect" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:office=architect"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=architect"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:office=architect"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:office=architect"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=architect"
+                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=architect" />
         <space />
         <key key="office" value="architect" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Architect -->
     <item name="Association" icon="presets/office/association.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:office=association" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:office=association"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:office=association"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=association" />
         <space />
         <key key="office" value="association" />
         <reference ref="name_operator_oh_wheelchair" />
@@ -8385,9 +9118,11 @@
     </item> <!-- Association -->
     <item name="Private company" icon="presets/office/private_company.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=company"
-              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=company"
-              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=company"
-              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=company" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:office=company"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:office=company"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:office=company"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=company"
+                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=company" />
         <space />
         <key key="office" value="company" />
         <reference ref="name_oh_wheelchair" />
@@ -8395,8 +9130,10 @@
     </item> <!-- Private company -->
     <item name="Educational institution" icon="presets/office/educational_institution.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=educational_institution"
-              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=educational_institution"
-              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=educational_institution" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:office=educational_institution"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=educational_institution"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:office=educational_institution"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=educational_institution" />
         <space />
         <key key="office" value="educational_institution" />
         <reference ref="name_operator_oh_wheelchair" />
@@ -8404,11 +9141,13 @@
     </item> <!-- Educational institution -->
     <item name="Employment agency" icon="presets/office/employment_agency.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=employment_agency"
-              de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=employment_agency"
-              fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:office=employment_agency"
-              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=employment_agency"
-              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=employment_agency"
-              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=employment_agency" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:office=employment_agency"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=employment_agency"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:office=employment_agency"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:office=employment_agency"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:office=employment_agency"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=employment_agency"
+                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=employment_agency" />
         <space />
         <key key="office" value="employment_agency" />
         <reference ref="name_brand_operator_oh_wheelchair" />
@@ -8416,18 +9155,21 @@
     </item> <!-- Employment agency -->
     <item name="Estate agent" icon="presets/office/real_state.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=estate_agent"
-              de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=estate_agent"
-              fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:office=estate_agent"
-              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=estate_agent"
-              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=estate_agent"
-              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=estate_agent" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:office=estate_agent"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=estate_agent"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:office=estate_agent"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:office=estate_agent"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:office=estate_agent"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=estate_agent"
+                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=estate_agent" />
         <space />
         <key key="office" value="estate_agent" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Estate agent -->
     <item name="Foundation" icon="presets/office/foundation.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:office=foundation" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:office=foundation"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:office=foundation" />
         <space />
         <key key="office" value="foundation" />
         <reference ref="name_brand_operator_oh_wheelchair" />
@@ -8435,9 +9177,14 @@
     </item> <!-- Foundation -->
     <item name="Government" icon="presets/office/government.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=government"
-              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=government"
-              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=government"
-              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=government" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:office=government"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=government"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:office=government"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:office=government"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:office=government"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:office=government"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=government"
+                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=government" />
         <space />
         <key key="office" value="government" />
         <text key="name" text="Name" />
@@ -8447,10 +9194,13 @@
     </item> <!-- Government -->
     <item name="Insurance" icon="presets/office/insurance.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=insurance"
-              de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=insurance"
-              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=insurance"
-              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=insurance"
-              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=insurance" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:office=insurance"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=insurance"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:office=insurance"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:office=insurance"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:office=insurance"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=insurance"
+                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=insurance" />
         <space />
         <key key="office" value="insurance" />
         <reference ref="name_brand_operator_oh_wheelchair" />
@@ -8458,9 +9208,11 @@
     </item> <!-- Insurance -->
     <item name="It specialist" icon="presets/office/it.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=it"
-              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=it"
-              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=it"
-              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=it" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:office=it"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:office=it"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:office=it"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=it"
+                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=it" />
         <space />
         <key key="office" value="it" />
         <reference ref="name_oh_wheelchair" />
@@ -8468,11 +9220,14 @@
     </item> <!-- It specialist -->
     <item name="Lawyer" icon="presets/office/lawyer.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=lawyer"
-              de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=lawyer"
-              fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:office=lawyer"
-              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=lawyer"
-              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=lawyer"
-              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=lawyer" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:office=lawyer"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=lawyer"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:office=lawyer"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:office=lawyer"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:office=lawyer"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:office=lawyer"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=lawyer"
+                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=lawyer" />
         <space />
         <key key="office" value="lawyer" />
         <reference ref="name_operator_oh_wheelchair" />
@@ -8480,9 +9235,13 @@
     </item> <!-- Lawyer -->
     <item name="Newspaper" icon="presets/office/newspaper.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=newspaper"
-              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=newspaper"
-              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=newspaper"
-              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=newspaper" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:office=newspaper"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=newspaper"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:office=newspaper"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:office=newspaper"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:office=newspaper"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=newspaper"
+                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=newspaper" />
         <space />
         <key key="office" value="newspaper" />
         <reference ref="name_operator_oh_wheelchair" />
@@ -8490,17 +9249,20 @@
     </item> <!-- Newspaper -->
     <item name="Non-governmental organisation (NGO)" icon="presets/office/ong.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=ngo"
-              fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:office=ngo"
-              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=ngo"
-              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=ngo"
-              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=ngo" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:office=ngo"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:office=ngo"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:office=ngo"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:office=ngo"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=ngo"
+                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=ngo" />
         <space />
         <key key="office" value="ngo" />
         <reference ref="name_brand_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Non-governmental organisation (NGO) -->
     <item name="Notary" icon="presets/office/notary.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:office=notary" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:office=notary"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:office=notary" />
         <space />
         <key key="office" value="notary" />
         <reference ref="name_oh_wheelchair" />
@@ -8508,8 +9270,10 @@
     </item> <!-- Notary -->
     <item name="Political party" icon="presets/office/political_party.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=political_party"
-              de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=political_party"
-              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=political_party" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:office=political_party"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=political_party"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:office=political_party"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=political_party" />
         <space />
         <key key="office" value="political_party" />
         <reference ref="name_oh_wheelchair" />
@@ -8517,8 +9281,11 @@
     </item> <!-- Political party -->
     <item name="Religion" icon="presets/office/religion.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=religion"
-              de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=religion"
-              pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:office=religion" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:office=religion"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=religion"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:office=religion"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:office=religion"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:office=religion" />
         <space />
         <key key="office" value="religion" />
         <reference ref="religious" />
@@ -8527,10 +9294,13 @@
     </item> <!-- Religion -->
     <item name="Research" icon="presets/office/research.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=research"
-              es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:office=research"
-              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=research"
-              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=research"
-              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=research" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:office=research"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=research"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:office=research"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:office=research"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:office=research"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=research"
+                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=research" />
         <space />
         <key key="office" value="research" />
         <reference ref="name_operator_oh_wheelchair" />
@@ -8538,7 +9308,9 @@
     </item> <!-- Research -->
     <item name="Tax advisor" icon="presets/office/tax_advisor.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=tax_advisor"
-              de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=tax_advisor" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:office=tax_advisor"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=tax_advisor"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:office=tax_advisor" />
         <space />
         <key key="office" value="tax_advisor" />
         <reference ref="name_brand_operator_oh_wheelchair" />
@@ -8546,9 +9318,11 @@
     </item> <!-- Tax advisor -->
     <item name="Telecommunication" icon="presets/office/telecommunication.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=telecommunication"
-              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=telecommunication"
-              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=telecommunication"
-              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=telecommunication" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:office=telecommunication"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:office=telecommunication"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:office=telecommunication"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=telecommunication"
+                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=telecommunication" />
         <space />
         <key key="office" value="telecommunication" />
         <reference ref="name_brand_operator_oh_wheelchair" />
@@ -8557,168 +9331,278 @@
   </group> <!-- Offices -->
   <group name="Craft" icon="presets/craft/painter.svg">
     <item name="Carpenter" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=carpenter" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=carpenter"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=carpenter"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:craft=carpenter"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=carpenter"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=carpenter"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:craft=carpenter" />
         <space />
         <key key="craft" value="carpenter" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Carpenter -->
     <item name="Shoemaker" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=shoemaker" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=shoemaker"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=shoemaker"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:craft=shoemaker"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=shoemaker"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=shoemaker"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:craft=shoemaker" />
         <space />
         <key key="craft" value="shoemaker" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Shoemaker -->
     <item name="Photographer" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=photographer" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=photographer"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=photographer"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:craft=photographer"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:craft=photographer"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=photographer"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=photographer"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:craft=photographer" />
         <space />
         <key key="craft" value="photographer" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Photographer -->
     <item name="Metal construction" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=metal_construction" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=metal_construction"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=metal_construction"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:craft=metal_construction"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=metal_construction"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=metal_construction" />
         <space />
         <key key="craft" value="metal_construction" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Metal construction -->
     <item name="Electrician" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=electrician" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=electrician"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=electrician"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:craft=electrician"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=electrician"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=electrician"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:craft=electrician" />
         <space />
         <key key="craft" value="electrician" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Electrician -->
     <item name="Brewery" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=brewery" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=brewery"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=brewery"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:craft=brewery"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=brewery"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:craft=brewery"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=brewery"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:craft=brewery" />
         <space />
         <key key="craft" value="brewery" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Brewery -->
     <item name="Plumber" icon="presets/craft/plumber.svg" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=plumber" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=plumber"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=plumber"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:craft=plumber"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=plumber"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=plumber" />
         <space />
         <key key="craft" value="plumber" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Plumber -->
     <item name="Sawmill" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=sawmill" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=sawmill"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=sawmill"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:craft=sawmill"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=sawmill"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:craft=sawmill"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=sawmill" />
         <space />
         <key key="craft" value="sawmill" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Sawmill -->
     <item name="Gardener" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=gardener" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=gardener"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=gardener"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:craft=gardener"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=gardener"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=gardener" />
         <space />
         <key key="craft" value="gardener" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Gardener -->
     <item name="Winery" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=winery" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=winery"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=winery"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:craft=winery"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=winery"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:craft=winery"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=winery" />
         <space />
         <key key="craft" value="winery" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Winery -->
     <item name="Hvac" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=hvac" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=hvac"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=hvac"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:craft=hvac"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=hvac"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=hvac" />
         <space />
         <key key="craft" value="hvac" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Hvac -->
     <item name="Painter" icon="presets/craft/painter.svg" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=painter" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=painter"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=painter"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:craft=painter"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=painter"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=painter" />
         <space />
         <key key="craft" value="painter" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Painter -->
     <item name="Stonemason" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=stonemason" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=stonemason"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=stonemason"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:craft=stonemason"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=stonemason"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:craft=stonemason"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=stonemason" />
         <space />
         <key key="craft" value="stonemason" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Stonemason -->
     <item name="Handicraft" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=handicraft" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=handicraft"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=handicraft"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:craft=handicraft"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=handicraft"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=handicraft"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:craft=handicraft" />
         <space />
         <key key="craft" value="handicraft" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Handicraft -->
     <item name="Pottery" icon="presets/craft/pottery.svg" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=pottery" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=pottery"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=pottery"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:craft=pottery"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=pottery"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=pottery" />
         <space />
         <key key="craft" value="pottery" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Pottery -->
     <item name="Key cutter" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=key_cutter" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=key_cutter"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=key_cutter"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=key_cutter"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=key_cutter"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:craft=key_cutter" />
         <space />
         <key key="craft" value="key_cutter" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Key cutter -->
     <item name="Caterer" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=caterer" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=caterer"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=caterer"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=caterer"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=caterer"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:craft=caterer" />
         <space />
         <key key="craft" value="caterer" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Caterer -->
     <item name="Roofer" icon="presets/craft/roofer.svg" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=roofer" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=roofer"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=roofer"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:craft=roofer"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=roofer"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=roofer" />
         <space />
         <key key="craft" value="roofer" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Roofer -->
     <item name="Beekeeper" icon="presets/craft/beekeeper.svg" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=beekeeper" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=beekeeper"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=beekeeper"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:craft=beekeeper"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:craft=beekeeper"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=beekeeper"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:craft=beekeeper"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=beekeeper"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:craft=beekeeper" />
         <space />
         <key key="craft" value="beekeeper" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Beekeeper -->
     <item name="Blacksmith" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=blacksmith" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=blacksmith"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=blacksmith"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=blacksmith"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:craft=blacksmith"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=blacksmith"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:craft=blacksmith" />
         <space />
         <key key="craft" value="blacksmith" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Blacksmith -->
     <item name="Locksmith" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=locksmith" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=locksmith"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=locksmith"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=locksmith"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=locksmith" />
         <space />
         <key key="craft" value="locksmith" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Locksmith -->
     <item name="Window construction" icon="presets/craft/window_construction.svg" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=window_construction" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=window_construction"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=window_construction"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:craft=window_construction"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=window_construction"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:craft=window_construction" />
         <space />
         <key key="craft" value="window_construction" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Window construction -->
     <item name="Upholsterer" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=upholsterer" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=upholsterer"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=upholsterer"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:craft=upholsterer"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=upholsterer"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=upholsterer" />
         <space />
         <key key="craft" value="upholsterer" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Upholsterer -->
     <item name="Tiler" icon="presets/craft/tiler.svg" type="node,closedway,multipolygon" preset_name_label="true">
-        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=tiler" />
+        <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=tiler"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:craft=tiler"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:craft=tiler"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:craft=tiler"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:craft=tiler" />
         <space />
         <key key="craft" value="tiler" />
         <reference ref="name_operator_oh_wheelchair" />
@@ -8729,11 +9613,12 @@
     <group name="Boundaries" icon="presets/misc/boundaries.svg">
         <item name="Administrative" icon="presets/misc/boundaries.svg" type="way,closedway,relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:boundary=administrative"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:boundary=administrative"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:boundary=administrative"
                   hu.href="http://wiki.openstreetmap.org/wiki/Hu:Tag:boundary=administrative"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:boundary=administrative"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:boundary=administrative"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:boundary=administrative"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:boundary=administrative"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:boundary=administrative" />
             <space />
             <key key="boundary" value="administrative" />
@@ -8743,8 +9628,11 @@
         </item> <!-- Administrative -->
         <item name="Political" icon="presets/misc/boundaries.svg" type="closedway,relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:boundary=political"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:boundary=political"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:boundary=political"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:boundary=political"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:boundary=political"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:boundary=political"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:boundary=political"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:boundary=political" />
             <space />
             <key key="boundary" value="political" />
@@ -8753,7 +9641,10 @@
         </item> <!-- Political -->
         <item name="Postal Code" icon="presets/misc/boundaries.svg" type="way,closedway,relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:boundary=postal_code"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:boundary=postal_code"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:boundary=postal_code"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:boundary=postal_code"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:boundary=postal_code"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:boundary=postal_code" />
             <space />
             <key key="boundary" value="postal_code" />
@@ -8761,18 +9652,23 @@
         </item> <!-- Postal Code -->
         <item name="National Park" icon="presets/misc/boundaries.svg" type="closedway,relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:boundary=national_park"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:boundary=national_park"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:boundary=national_park"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:boundary=national_park"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:boundary=national_park" />
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:boundary=national_park"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:boundary=national_park" />
             <space />
             <key key="boundary" value="national_park" />
             <text key="name" text="Name" />
         </item> <!-- National Park -->
         <item name="Protected Area" icon="presets/misc/boundaries.svg" type="closedway,relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:boundary=protected_area"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:boundary=protected_area"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:boundary=protected_area"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:boundary=protected_area"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:boundary=protected_area"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:boundary=protected_area"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:boundary=protected_area"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:boundary=protected_area"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:boundary=protected_area" />
             <space />
             <key key="boundary" value="protected_area" />
@@ -8787,8 +9683,10 @@
         </item> <!-- Protected Area -->
         <item name="Maritime" icon="presets/misc/boundaries.svg" type="way,closedway,relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:boundary=maritime"
-                  no.href="http://wiki.openstreetmap.org/wiki/No:Tag:boundary=maritime"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:boundary=maritime" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:boundary=maritime"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:boundary=maritime"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:boundary=maritime"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:boundary=maritime" />
             <space />
             <key key="boundary" value="maritime" />
             <combo key="border_type" text="Border type" values="baseline,territorial,contiguous,eez" />
@@ -8798,43 +9696,48 @@
     <group name="Places" icon="presets/place/isolated_dwelling.svg">
         <item name="Continent" icon="presets/place/capital.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=continent"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:place=continent"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=continent"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:place=continent"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:place=continent" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:place=continent" />
             <space />
             <key key="place" value="continent" />
             <reference ref="name_wikipedia" />
         </item> <!-- Continent -->
         <item name="Country" icon="presets/place/capital.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=country"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:place=country"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=country"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:place=country"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:place=country" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:place=country" />
             <space />
             <key key="place" value="country" />
             <reference ref="name_wikipedia" />
         </item> <!-- Country -->
         <item name="State" icon="presets/place/capital.svg" name_context="place" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=state"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:place=state"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=state"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:place=state"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:place=state" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:place=state" />
             <space />
             <key key="place" value="state" />
             <reference ref="name_wikipedia" />
         </item> <!-- State -->
         <item name="Region" icon="presets/place/capital.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=region"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:place=region" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:place=region"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:place=region" />
             <space />
             <key key="place" value="region" />
             <reference ref="name_wikipedia" />
         </item> <!-- Region -->
         <item name="County" icon="presets/place/capital.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=county"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:place=county"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=county"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:place=county"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:place=county" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:place=county" />
             <space />
             <key key="place" value="county" />
             <reference ref="name_wikipedia" />
@@ -8843,11 +9746,12 @@
         <separator/>
         <item name="City" icon="presets/place/city.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=city"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:place=city"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=city"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:place=city"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:place=city"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:place=city"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:place=city"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:place=city"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:place=city" />
             <space />
             <key key="place" value="city" />
@@ -8856,12 +9760,13 @@
         </item> <!-- City -->
         <item name="Town" icon="presets/place/town.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=town"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:place=town"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:place=town"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=town"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:place=town"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:place=town"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:place=town"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:place=town"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:place=town"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:place=town" />
             <space />
             <key key="place" value="town" />
@@ -8870,6 +9775,7 @@
         </item> <!-- Town -->
         <item name="Village" icon="presets/place/village.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=village"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:place=village"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:place=village"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=village"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:place=village"
@@ -8877,7 +9783,7 @@
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:place=village"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:place=village"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:place=village"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:place=village"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:place=village"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:place=village" />
             <space />
             <key key="place" value="village" />
@@ -8886,12 +9792,14 @@
         </item> <!-- Village -->
         <item name="Hamlet" icon="presets/place/hamlet.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=hamlet"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:place=hamlet"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:place=hamlet"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=hamlet"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:place=hamlet"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:place=hamlet"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:place=hamlet"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:place=hamlet"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:place=hamlet"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:place=hamlet"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:place=hamlet" />
             <space />
             <key key="place" value="hamlet" />
@@ -8900,10 +9808,12 @@
         </item> <!-- Hamlet -->
         <item name="Isolated Dwelling" icon="presets/place/isolated_dwelling.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=isolated_dwelling"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:place=isolated_dwelling"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=isolated_dwelling"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:place=isolated_dwelling"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:place=isolated_dwelling"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:place=isolated_dwelling"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:place=isolated_dwelling"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:place=isolated_dwelling"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:place=isolated_dwelling" />
             <space />
             <key key="place" value="isolated_dwelling" />
@@ -8913,12 +9823,13 @@
         <separator/>
         <item name="Suburb" icon="presets/place/suburb.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=suburb"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:place=suburb"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=suburb"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:place=suburb"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:place=suburb"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:place=suburb"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:place=suburb"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:place=suburb"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:place=suburb"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:place=suburb" />
             <space />
             <key key="place" value="suburb" />
@@ -8927,6 +9838,7 @@
         </item> <!-- Suburb -->
         <item name="Neighbourhood" icon="presets/place/neighbourhood.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=neighbourhood"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:place=neighbourhood"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=neighbourhood"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:place=neighbourhood"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:place=neighbourhood"
@@ -8940,8 +9852,10 @@
         </item> <!-- Neighbourhood -->
         <item name="Farm" icon="presets/place/farm.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=farm"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:place=farm"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:place=farm"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:place=farm"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:place=farm" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:place=farm" />
             <space />
             <label text="A farm within a bigger settlement" />
             <label text="(please use isolated_dwelling for an isolated farm)" />
@@ -8952,11 +9866,12 @@
         <separator/>
         <item name="Locality" icon="presets/place/locality.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=locality"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:place=locality"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=locality"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:place=locality"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:place=locality"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:place=locality"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:place=locality"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:place=locality"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:place=locality" />
             <space />
             <key key="place" value="locality" />
@@ -8969,8 +9884,10 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=peak"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=peak"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=peak"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:natural=peak"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=peak"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:natural=peak"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=peak"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:natural=peak"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=peak"
                   zh_TW.href="http://wiki.openstreetmap.org/wiki/Zh-hant:Tag:natural=peak" />
             <label text="The top (summit) of a mountain or hill." />
@@ -8984,6 +9901,7 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=saddle"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=saddle"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=saddle"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:natural=saddle"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=saddle"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=saddle"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=saddle" />
@@ -8999,7 +9917,8 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=glacier"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=glacier"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:natural=glacier"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:natural=glacier"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=glacier"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:natural=glacier"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=glacier" />
             <label text="A persistent body of dense ice that is constantly moving under its own weight." />
             <space />
@@ -9012,8 +9931,9 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=volcano"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=volcano"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=volcano"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:natural=volcano"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=volcano"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:natural=volcano"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:natural=volcano"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=volcano" />
             <label text="A volcano, either dormant, extinct or active." />
             <space />
@@ -9044,6 +9964,7 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=valley"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=valley"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=valley"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=valley"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=valley" />
             <label text="A low area between hills." />
             <space />
@@ -9054,9 +9975,11 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=cliff"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=cliff"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=cliff"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=cliff"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:natural=cliff"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=cliff"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:natural=cliff"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=cliff"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:natural=cliff"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=cliff" />
             <label text="A steep rock face exposure, with a significant vertical, or near vertical (leave the lower face to the right of the way)." />
             <space />
@@ -9069,8 +9992,10 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=cave_entrance"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=cave_entrance"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=cave_entrance"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:natural=cave_entrance"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=cave_entrance"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=cave_entrance"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:natural=cave_entrance"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:natural=cave_entrance"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=cave_entrance" />
             <label text="The entrance to a cave." />
             <space />
@@ -9083,10 +10008,11 @@
         <separator/>
         <item name="Island" icon="presets/place/island.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=island"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:place=island"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=island"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:place=island"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:place=island"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:place=island"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:place=island"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:place=island" />
             <space />
             <key key="place" value="island" />
@@ -9094,9 +10020,10 @@
         </item> <!-- Island -->
         <item name="Islet" icon="presets/place/islet.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=islet"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:place=islet"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=islet"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:place=islet"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:place=islet"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:place=islet"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:place=islet" />
             <space />
             <key key="place" value="islet" />
@@ -9104,7 +10031,9 @@
         </item> <!-- Islet -->
         <item name="Reef" icon="presets/landmark/reef.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=reef"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=reef" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=reef"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=reef"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=reef" />
             <space />
             <key key="natural" value="reef" />
             <text key="name" text="Name" />
@@ -9121,7 +10050,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:natural=tree"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=tree"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=tree"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:natural=tree"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:natural=tree"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=tree"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:natural=tree" />
             <label text="A single tree." />
@@ -9157,9 +10086,10 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=wood"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=wood"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=wood"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=wood"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=wood"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=wood"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:natural=wood"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:natural=wood"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=wood"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:natural=wood" />
             <label text="Woodland where timber production does not dominate use." />
@@ -9172,10 +10102,11 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=forest"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=forest"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=forest"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:landuse=forest"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:landuse=forest"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=forest"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:landuse=forest"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=forest"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=forest"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=forest"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:landuse=forest" />
             <space />
@@ -9187,10 +10118,11 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=cutline"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=cutline"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=cutline"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:man_made=cutline"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:man_made=cutline"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=cutline"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:man_made=cutline"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=cutline"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:man_made=cutline"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=cutline" />
             <space />
             <key key="man_made" value="cutline" />
@@ -9205,7 +10137,7 @@
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:natural=grassland"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=grassland"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=grassland"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:natural=grassland"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:natural=grassland"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=grassland"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:natural=grassland" />
             <label text="Where vegetation is dominated by grasses (Poaceae) and other herbaceous (non-woody) plants. Excludes cultivated areas and wetlands." />
@@ -9216,11 +10148,12 @@
         </item> <!-- Grassland -->
         <item name="Nature Reserve" icon="presets/leisure/nature_reserve.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=nature_reserve"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=nature_reserve"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=nature_reserve"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=nature_reserve"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=nature_reserve"
-                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=nature_reserve"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:leisure=nature_reserve" />
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=nature_reserve"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=nature_reserve" />
             <space />
             <key key="leisure" value="nature_reserve" />
             <text key="name" text="Name" />
@@ -9235,7 +10168,7 @@
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:natural=scree"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=scree"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=scree"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:natural=scree"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:natural=scree"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=scree" />
             <label text="An accumulation of loose angular rocks." />
             <space />
@@ -9243,7 +10176,13 @@
             <text key="name" text="Name" />
         </item> <!-- Scree -->
         <item name="Shingle" icon="presets/landuse/shingle.svg" type="closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=shingle" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=shingle"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=shingle"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=shingle"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=shingle"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=shingle"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=shingle"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=shingle" />
             <label text="An accumulation of loose rounded rocks on a beach or riverbed." />
             <space />
             <key key="natural" value="shingle" />
@@ -9255,7 +10194,8 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=fell"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=fell"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=fell"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:natural=fell"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=fell"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:natural=fell"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=fell" />
             <label text="Bare upper lying uncultivated land principally covered with grass and often grazed." />
             <space />
@@ -9266,10 +10206,11 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=scrub"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=scrub"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=scrub"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=scrub"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:natural=scrub"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=scrub"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=scrub"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:natural=scrub"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:natural=scrub"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=scrub"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:natural=scrub" />
             <label text="Bare lower lying uncultivated land with bushes but little or no tree cover." />
@@ -9289,7 +10230,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:natural=heath"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=heath"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=heath"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:natural=heath"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:natural=heath"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=heath" />
             <label text="Bare lower lying uncultivated land with a shrubland habitat found mainly on free-draining infertile, acidic soils, and is characterised by open, low-growing woody vegetation." />
             <space />
@@ -9299,8 +10240,11 @@
         <item name="Sand" icon="presets/landuse/sand.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=sand"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=sand"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=sand"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=sand"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:natural=sand"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=sand"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=sand"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:natural=sand"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=sand" />
             <label text="Large area covered with sand." />
             <space />
@@ -9311,6 +10255,7 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=bare_rock"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=bare_rock"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=bare_rock"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=bare_rock"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:natural=bare_rock"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:natural=bare_rock"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=bare_rock"
@@ -9326,7 +10271,9 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=rock"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=rock"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=rock"
-                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=rock" />
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=rock"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=rock"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=rock" />
             <label text="A notable rock or group of rocks, with at least one of them firmly attached to the underlying bedrock." />
             <space />
             <key key="natural" value="rock" />
@@ -9341,7 +10288,9 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=stone"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=stone"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:natural=stone"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:natural=stone" />
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=stone"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:natural=stone"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:natural=stone" />
             <label text="A single notable free-standing rock, which may differ from the composition of the terrain it lies in." />
             <space />
             <key key="natural" value="stone" />
@@ -9360,7 +10309,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:landuse=farmyard"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=farmyard"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:landuse=farmyard"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=farmyard" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=farmyard" />
             <space />
             <key key="landuse" value="farmyard" />
             <text key="name" text="Name" />
@@ -9370,10 +10319,10 @@
                   ca.href="http://wiki.openstreetmap.org/wiki/Ca:Tag:landuse=farmland"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=farmland"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=farmland"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:landuse=farmland"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:landuse=farmland"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=farmland"
-                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:landuse=farmland"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=farmland" />
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:landuse=farmland" />
             <space />
             <key key="landuse" value="farmland" />
             <text key="name" text="Name" />
@@ -9386,7 +10335,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:landuse=meadow"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=meadow"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:landuse=meadow"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=meadow"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=meadow"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=meadow" />
             <space />
             <key key="landuse" value="meadow" />
@@ -9396,9 +10345,10 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=orchard"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=orchard"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=orchard"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:landuse=orchard"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:landuse=orchard"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=orchard"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=orchard"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=orchard"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=orchard" />
             <space />
             <key key="landuse" value="orchard" />
@@ -9410,7 +10360,7 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=vineyard"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=vineyard"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=vineyard"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=vineyard"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=vineyard"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=vineyard" />
             <space />
             <key key="landuse" value="vineyard" />
@@ -9420,11 +10370,12 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=greenhouse_horticulture"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=greenhouse_horticulture"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=greenhouse_horticulture"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:landuse=greenhouse_horticulture"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:landuse=greenhouse_horticulture"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:landuse=greenhouse_horticulture"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=greenhouse_horticulture"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:landuse=greenhouse_horticulture"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=greenhouse_horticulture"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=greenhouse_horticulture"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=greenhouse_horticulture" />
             <space />
             <key key="landuse" value="greenhouse_horticulture" />
@@ -9447,7 +10398,10 @@
             <text key="species" text="Species" />
         </item> <!-- Plant Nursery -->
         <item name="Aquaculture" icon="presets/landuse/aquaculture.svg" type="closedway,multipolygon" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=aquaculture" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=aquaculture"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=aquaculture"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=aquaculture"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=aquaculture" />
             <space />
             <key key="landuse" value="aquaculture" />
             <text key="name" text="Name" />
@@ -9462,7 +10416,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:landuse=allotments"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=allotments"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:landuse=allotments"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=allotments"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=allotments"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=allotments" />
             <space />
             <key key="landuse" value="allotments" />
@@ -9471,11 +10425,12 @@
         <separator/>
         <item name="Garden" icon="presets/leisure/garden.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=garden"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=garden"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=garden"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=garden"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=garden"
-                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=garden"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:leisure=garden" />
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=garden"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=garden" />
             <space />
             <key key="leisure" value="garden" />
             <text key="name" text="Name" />
@@ -9489,7 +10444,7 @@
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=grass"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:landuse=grass"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:landuse=grass"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=grass"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=grass"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=grass" />
             <space />
             <key key="landuse" value="grass" />
@@ -9502,7 +10457,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:landuse=village_green"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=village_green"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:landuse=village_green"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=village_green"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=village_green"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=village_green"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:landuse=village_green" />
             <space />
@@ -9511,8 +10466,10 @@
         </item> <!-- Village Green -->
         <item name="Common" icon="presets/leisure/common.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=common"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=common"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=common"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=common"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=common"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:leisure=common"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:leisure=common"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:leisure=common" />
             <space />
@@ -9521,12 +10478,13 @@
         </item> <!-- Common -->
         <item name="Park" icon="presets/leisure/park.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=park"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:leisure=park"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=park"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=park"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:leisure=park"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=park"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=park"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=park"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:leisure=park"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:leisure=park" />
             <space />
             <key key="leisure" value="park" />
@@ -9536,9 +10494,10 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=recreation_ground"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=recreation_ground"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=recreation_ground"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:landuse=recreation_ground"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=recreation_ground"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:landuse=recreation_ground"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=recreation_ground"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=recreation_ground"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=recreation_ground" />
             <space />
             <key key="landuse" value="recreation_ground" />
@@ -9549,10 +10508,11 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=residential"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=residential"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=residential"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:landuse=residential"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:landuse=residential"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=residential"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:landuse=residential"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=residential"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=residential"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=residential" />
             <space />
             <key key="landuse" value="residential" />
@@ -9562,11 +10522,12 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=grave_yard"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=grave_yard"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=grave_yard"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=grave_yard"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=grave_yard"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=grave_yard"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:amenity=grave_yard"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=grave_yard"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=grave_yard"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:amenity=grave_yard"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=grave_yard" />
             <space />
             <key key="amenity" value="grave_yard" />
@@ -9576,12 +10537,13 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=cemetery"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=cemetery"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=cemetery"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:landuse=cemetery"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:landuse=cemetery"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:landuse=cemetery"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=cemetery"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:landuse=cemetery"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:landuse=cemetery"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=cemetery"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=cemetery"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=cemetery"
                   zh_TW.href="http://wiki.openstreetmap.org/wiki/Zh-hant:Tag:landuse=cemetery" />
             <space />
@@ -9604,7 +10566,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:landuse=retail"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=retail"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:landuse=retail"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=retail"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=retail"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=retail" />
             <space />
             <key key="landuse" value="retail" />
@@ -9617,7 +10579,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:landuse=commercial"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=commercial"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:landuse=commercial"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=commercial"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=commercial"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=commercial" />
             <space />
             <key key="landuse" value="commercial" />
@@ -9631,7 +10593,7 @@
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=industrial"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:landuse=industrial"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:landuse=industrial"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=industrial"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=industrial"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=industrial" />
             <space />
             <key key="landuse" value="industrial" />
@@ -9641,9 +10603,10 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=garages"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=garages"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=garages"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:landuse=garages"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=garages"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:landuse=garages"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=garages"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=garages"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=garages" />
             <space />
             <key key="landuse" value="garages" />
@@ -9656,7 +10619,7 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=railway"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=railway"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:landuse=railway"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=railway"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=railway"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=railway" />
             <space />
             <key key="landuse" value="railway" />
@@ -9667,7 +10630,7 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=military"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=military"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=military"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=military"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=military"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=military" />
             <space />
             <key key="landuse" value="military" />
@@ -9678,10 +10641,11 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=construction"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=construction"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=construction"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:landuse=construction"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:landuse=construction"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:landuse=construction"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=construction"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:landuse=construction"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=construction"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=construction" />
             <space />
             <key key="landuse" value="construction" />
@@ -9694,7 +10658,7 @@
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:landuse=brownfield"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=brownfield"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:landuse=brownfield"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=brownfield"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=brownfield"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=brownfield" />
             <space />
             <key key="landuse" value="brownfield" />
@@ -9706,7 +10670,8 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=greenfield"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:landuse=greenfield"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=greenfield"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=greenfield" />
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:landuse=greenfield"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=greenfield" />
             <space />
             <key key="landuse" value="greenfield" />
             <text key="name" text="Name" />
@@ -9717,7 +10682,7 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=landfill"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=landfill"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:landuse=landfill"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=landfill"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=landfill"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=landfill" />
             <space />
             <key key="landuse" value="landfill" />
@@ -9727,9 +10692,11 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=quarry"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=quarry"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=quarry"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:landuse=quarry"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:landuse=quarry"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=quarry"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:landuse=quarry"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=quarry"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:landuse=quarry"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=quarry" />
             <space />
             <key key="landuse" value="quarry" />
@@ -9740,7 +10707,6 @@
     <group name="Annotation" icon="presets/misc/housenumber.svg">
         <item name="Name" icon="presets/misc/name.svg" type="node,way,closedway,relation,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:name"
-                  ar.href="http://wiki.openstreetmap.org/wiki/Ar:Key:name"
                   ca.href="http://wiki.openstreetmap.org/wiki/Ca:Key:name"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:name"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:name"
@@ -9751,7 +10717,7 @@
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:name"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Key:name"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:name"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Key:name"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Key:name"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:name"
                   sv.href="http://wiki.openstreetmap.org/wiki/Sv:Key:name"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Key:name"
@@ -9775,13 +10741,13 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:addr"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Key:addr"
                   et.href="http://wiki.openstreetmap.org/wiki/Et:Key:addr"
+                  fi.href="http://wiki.openstreetmap.org/wiki/Fi:Key:addr"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:addr"
-                  hr.href="http://wiki.openstreetmap.org/wiki/Hr:Key:addr"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Key:addr"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:addr"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Key:addr"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:addr"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Key:addr"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Key:addr"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:addr"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Key:addr"
                   vi.href="http://wiki.openstreetmap.org/wiki/Vi:Key:addr" />
@@ -9829,6 +10795,7 @@
             <link href="http://wiki.openstreetmap.org/wiki/Annotations"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Annotations"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Annotations"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Annotations"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Annotations"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Annotations" />
             <space />
@@ -9849,7 +10816,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:contact"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:contact"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:contact"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Key:contact"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Key:contact"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:contact" />
             <space />
             <text key="contact:website" text="Website" match="key" />
@@ -9865,10 +10832,12 @@
             <link href="http://wiki.openstreetmap.org/wiki/Key:description"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:description"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:description"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Key:description"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Key:description"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:description"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Key:description"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:description"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:description"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:description" />
             <space />
             <label text="A short text with additional information." text_context="description=*" />
@@ -9884,6 +10853,7 @@
             <link href="http://wiki.openstreetmap.org/wiki/Key:note"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:note"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:note"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Key:note"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Key:note"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:note"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Key:note"
@@ -9930,6 +10900,7 @@
                   hu.href="http://wiki.openstreetmap.org/wiki/Hu:Relation:multipolygon"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Relation:multipolygon"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Relation:multipolygon"
+                  nl.href="http://wiki.openstreetmap.org/wiki/NL:Relation:multipolygon"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Relation:multipolygon"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Relation:multipolygon"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Relation:multipolygon" />
@@ -9944,6 +10915,7 @@
         </item> <!-- Multipolygon -->
         <item name="Boundary" icon="presets/misc/boundaries.svg" type="relation,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Relation:boundary"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Relation:boundary"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Relation:boundary"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Relation:boundary"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Relation:boundary"
@@ -9967,10 +10939,7 @@
             </roles>
         </item> <!-- Boundary -->
         <item name="Site" type="relation" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Relation:site"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Relation:site"
-                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Relation:site"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Relation:site" />
+            <link href="http://wiki.openstreetmap.org/wiki/Relation:site" />
             <space />
             <key key="type" value="site" />
             <text key="name" text="Site name" />
@@ -9984,13 +10953,14 @@
         <separator/>
         <item name="Turn Restriction" icon="presets/vehicle/restriction/turn_restrictions/no_u_turn.svg" type="relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Relation:restriction"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Relation:restriction"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Relation:restriction"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Relation:restriction"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Relation:restriction"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Relation:restriction"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Relation:restriction"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Relation:restriction"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Relation:restriction"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Relation:restriction"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Relation:restriction" />
             <space />
             <key key="type" value="restriction" />
@@ -10006,6 +10976,7 @@
         </item> <!-- Turn Restriction -->
         <item name="Enforcement" icon="presets/vehicle/restriction/speed_camera.svg" type="relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Relation:enforcement"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Relation:enforcement"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Relation:enforcement"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Relation:enforcement"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Relation:enforcement"
@@ -10030,12 +11001,9 @@
         <group name="Routes" icon="presets/misc/route.svg">
             <item name="Bicycle Route" icon="presets/misc/route.svg" type="relation" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:route=bicycle"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Cycle_routes"
-                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Cycle_routes"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Cycle_routes"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Cycle_routes"
-                  sk.href="http://wiki.openstreetmap.org/wiki/Sk:Cycle_routes"
-                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Cycle_routes" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:route=bicycle"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:route=bicycle"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:route=bicycle" />
                 <space/>
                 <key key="type" value="route"/>
                 <key key="route" value="bicycle"/>
@@ -10054,11 +11022,11 @@
                 <link href="http://wiki.openstreetmap.org/wiki/Mountain_biking"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Mountain_biking"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Mountain_biking"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Mountain_biking"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Mountain_biking"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Mountain_biking"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Mountain_biking"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Mountain_biking"
-                  no.href="http://wiki.openstreetmap.org/wiki/No:Mountain_biking"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Mountain_biking" />
                 <space/>
                 <key key="type" value="route"/>
@@ -10075,14 +11043,9 @@
             </item> <!-- Mountain Biking Route -->
             <item name="Hiking Route" icon="presets/misc/route.svg" type="relation" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:route=hiking#Tagging_walking_and_hiking_Route_Networks"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Hiking"
-                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Hiking"
-                  it.href="http://wiki.openstreetmap.org/wiki/IT:Hiking"
-                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Hiking"
-                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Hiking"
-                  ro.href="http://wiki.openstreetmap.org/wiki/Ro:Hiking"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Hiking"
-                  vi.href="http://wiki.openstreetmap.org/wiki/Vi:Hiking" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:route=hiking"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:route=hiking"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:route=hiking" />
                 <space/>
                 <key key="type" value="route"/>
                 <key key="route" value="hiking"/>
@@ -10098,7 +11061,9 @@
                 </roles>
             </item> <!-- Hiking Route -->
             <item name="Walking Route" icon="presets/misc/route.svg" type="relation" preset_name_label="true">
-                <link href="http://wiki.openstreetmap.org/wiki/Tag:route=foot" />
+                <link href="http://wiki.openstreetmap.org/wiki/Tag:route=foot"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:route=foot"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:route=foot" />
                 <space/>
                 <key key="type" value="route"/>
                 <key key="route" value="foot"/>
@@ -10114,7 +11079,10 @@
                 </roles>
             </item> <!-- Walking Route -->
             <item name="Riding Route" icon="presets/misc/route.svg" type="relation" preset_name_label="true">
-                <link href="http://wiki.openstreetmap.org/wiki/Tag:route=horse" />
+                <link href="http://wiki.openstreetmap.org/wiki/Tag:route=horse"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:route=horse"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:route=horse"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:route=horse" />
                 <space/>
                 <key key="type" value="route"/>
                 <key key="route" value="horse"/>
@@ -10131,6 +11099,7 @@
             </item> <!-- Riding Route -->
             <item name="Piste Route" icon="presets/misc/route.svg" type="relation" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:route=piste"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:route=piste"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:route=piste"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:route=piste" />
                 <space/>
@@ -10153,6 +11122,7 @@
             </item> <!-- Piste Route -->
             <item name="Ski Route" icon="presets/misc/route.svg" type="relation" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:route=ski"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:route=ski"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:route=ski" />
                 <space/>
                 <key key="type" value="route"/>
@@ -10175,7 +11145,8 @@
             <separator/>
             <item name="Detour Route" icon="presets/misc/route.svg" type="relation" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:route=detour"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:route=detour" />
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:route=detour"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:route=detour" />
                 <space/>
                 <key key="type" value="route"/>
                 <key key="route" value="detour"/>
@@ -10202,9 +11173,10 @@
             </item> <!-- Power Route -->
             <item name="Railway Route" icon="presets/misc/route.svg" type="relation" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:route=railway"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:route=railway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:route=railway"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:route=railway"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:route=railway"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:route=railway"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:route=railway" />
                 <space/>
                 <key key="type" value="route"/>
@@ -10216,9 +11188,10 @@
             </item> <!-- Railway Route -->
             <item name="Road Route" icon="presets/misc/route.svg" type="relation" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:route=road"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:route=road"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:route=road"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:route=road"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:route=road" />
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:route=road" />
                 <space/>
                 <key key="type" value="route"/>
                 <key key="route" value="road"/>
@@ -10250,7 +11223,9 @@
         <separator/>
         <item name="Associated Street" icon="presets/misc/housenumber.svg" type="relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Relation:associatedStreet"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Relation:associatedStreet"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Relation:associatedStreet"
+                  fi.href="http://wiki.openstreetmap.org/wiki/Fi:Relation:associatedStreet"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Relation:associatedStreet"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Relation:associatedStreet"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Relation:associatedStreet"
@@ -10266,6 +11241,8 @@
         </item> <!-- Associated Street -->
         <item name="Street" type="relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Relation:street"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Relation:street"
+                  fi.href="http://wiki.openstreetmap.org/wiki/Fi:Relation:street"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Relation:street" />
             <space />
             <key key="type" value="street" />
@@ -10279,6 +11256,7 @@
         </item> <!-- Street -->
         <item name="Destination Sign" icon="presets/misc/information/guidepost.svg" type="relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Relation:destination_sign"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Relation:destination_sign"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Relation:destination_sign"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Relation:destination_sign"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Relation:destination_sign"
@@ -10303,7 +11281,9 @@
         <separator/>
         <item name="Waterway" icon="presets/nautical/waterway_river.svg" type="relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Relation:waterway"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Relation:waterway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Relation:waterway"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Relation:waterway"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Relation:waterway"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Relation:waterway"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Relation:waterway" />
diff --git a/data/maps.xsd b/data/maps.xsd
index a40235b..a414d4d 100644
--- a/data/maps.xsd
+++ b/data/maps.xsd
@@ -1,713 +1,713 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://josm.openstreetmap.de/maps-1.0"
-	xmlns:tns="http://josm.openstreetmap.de/maps-1.0" elementFormDefault="qualified">
+    xmlns:tns="http://josm.openstreetmap.de/maps-1.0" elementFormDefault="qualified">
 
-	<xs:simpleType name="latitude">
-		<xs:restriction base="xs:decimal">
-			<xs:minInclusive value="-90" />
-			<xs:maxInclusive value="+90" />
-		</xs:restriction>
-	</xs:simpleType>
+    <xs:simpleType name="latitude">
+        <xs:restriction base="xs:decimal">
+            <xs:minInclusive value="-90" />
+            <xs:maxInclusive value="+90" />
+        </xs:restriction>
+    </xs:simpleType>
 
-	<xs:simpleType name="longitude">
-		<xs:restriction base="xs:decimal">
-			<xs:minInclusive value="-180" />
-			<xs:maxInclusive value="+180" />
-		</xs:restriction>
-	</xs:simpleType>
-	
-	<xs:simpleType name="id">
+    <xs:simpleType name="longitude">
+        <xs:restriction base="xs:decimal">
+            <xs:minInclusive value="-180" />
+            <xs:maxInclusive value="+180" />
+        </xs:restriction>
+    </xs:simpleType>
+    
+    <xs:simpleType name="id">
         <!-- exclude white space characters and characters that are not valid for file names in Windows -->
-		<xs:restriction base="xs:string">
-			<xs:pattern value='[^\s/\\:*?"<>|]+' />
-		</xs:restriction>
-	</xs:simpleType>
+        <xs:restriction base="xs:string">
+            <xs:pattern value='[^\s/\\:*?"<>|]+' />
+        </xs:restriction>
+    </xs:simpleType>
 
-	<xs:simpleType name="type">
-		<xs:restriction base="xs:string">
-			<xs:enumeration value="wms" />
-			<xs:enumeration value="wms_endpoint" />
-			<xs:enumeration value="wmts" />
-			<xs:enumeration value="tms" />
-			<xs:enumeration value="bing" />
-			<xs:enumeration value="scanex" />
-		</xs:restriction>
-	</xs:simpleType>
+    <xs:simpleType name="type">
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="wms" />
+            <xs:enumeration value="wms_endpoint" />
+            <xs:enumeration value="wmts" />
+            <xs:enumeration value="tms" />
+            <xs:enumeration value="bing" />
+            <xs:enumeration value="scanex" />
+        </xs:restriction>
+    </xs:simpleType>
 
-	<xs:simpleType name="zoom">
-		<xs:restriction base="xs:integer">
-			<xs:minInclusive value="0" />
-			<xs:maxInclusive value="24" />
-		</xs:restriction>
-	</xs:simpleType>
+    <xs:simpleType name="zoom">
+        <xs:restriction base="xs:integer">
+            <xs:minInclusive value="0" />
+            <xs:maxInclusive value="24" />
+        </xs:restriction>
+    </xs:simpleType>
 
-	<xs:complexType name="eula">
-		<xs:simpleContent>
-			<xs:extension base="xs:anyURI" >
-				<xs:attribute name="mandatory" type="xs:boolean" use="optional" />
-			</xs:extension>
-		</xs:simpleContent>
-	</xs:complexType>
+    <xs:complexType name="eula">
+        <xs:simpleContent>
+            <xs:extension base="xs:anyURI" >
+                <xs:attribute name="mandatory" type="xs:boolean" use="optional" />
+            </xs:extension>
+        </xs:simpleContent>
+    </xs:complexType>
 
-	<xs:complexType name="attribution-text">
-		<xs:simpleContent>
-			<xs:extension base="xs:string">
-				<xs:attribute name="mandatory" type="xs:boolean" use="optional" />
-			</xs:extension>
-		</xs:simpleContent>
-	</xs:complexType>
+    <xs:complexType name="attribution-text">
+        <xs:simpleContent>
+            <xs:extension base="xs:string">
+                <xs:attribute name="mandatory" type="xs:boolean" use="optional" />
+            </xs:extension>
+        </xs:simpleContent>
+    </xs:complexType>
 
-	<xs:complexType name="description">
-		<xs:simpleContent>
-			<xs:extension base="xs:string">
-				<xs:attribute name="lang" type="xs:string" use="required" />
-			</xs:extension>
-		</xs:simpleContent>
-	</xs:complexType>
+    <xs:complexType name="description">
+        <xs:simpleContent>
+            <xs:extension base="xs:string">
+                <xs:attribute name="lang" type="xs:string" use="required" />
+            </xs:extension>
+        </xs:simpleContent>
+    </xs:complexType>
 
-	<xs:complexType name="name">
-		<xs:simpleContent>
-			<xs:extension base="xs:string">
-				<xs:attribute name="lang" type="xs:string" use="optional" />
-			</xs:extension>
-		</xs:simpleContent>
-	</xs:complexType>
+    <xs:complexType name="name">
+        <xs:simpleContent>
+            <xs:extension base="xs:string">
+                <xs:attribute name="lang" type="xs:string" use="optional" />
+            </xs:extension>
+        </xs:simpleContent>
+    </xs:complexType>
 
-	<xs:complexType name="point">
-		<xs:attribute name="lat" type="tns:latitude" use="required" />
-		<xs:attribute name="lon" type="tns:longitude" use="required" />
-	</xs:complexType>
+    <xs:complexType name="point">
+        <xs:attribute name="lat" type="tns:latitude" use="required" />
+        <xs:attribute name="lon" type="tns:longitude" use="required" />
+    </xs:complexType>
 
-	<xs:complexType name="shape">
-		<xs:sequence>
-			<xs:element name="point" minOccurs="3" maxOccurs="999" type="tns:point" />
-		</xs:sequence>
-	</xs:complexType>
+    <xs:complexType name="shape">
+        <xs:sequence>
+            <xs:element name="point" minOccurs="3" maxOccurs="999" type="tns:point" />
+        </xs:sequence>
+    </xs:complexType>
 
-	<xs:complexType name="bounds">
-		<xs:sequence>
-			<xs:element name="shape" minOccurs="0" maxOccurs="100" type="tns:shape" />
-		</xs:sequence>
-		<xs:attribute name="min-lat" type="tns:latitude" use="required" />
-		<xs:attribute name="min-lon" type="tns:longitude" use="required" />
-		<xs:attribute name="max-lat" type="tns:latitude" use="required" />
-		<xs:attribute name="max-lon" type="tns:longitude" use="required" />
-	</xs:complexType>
+    <xs:complexType name="bounds">
+        <xs:sequence>
+            <xs:element name="shape" minOccurs="0" maxOccurs="100" type="tns:shape" />
+        </xs:sequence>
+        <xs:attribute name="min-lat" type="tns:latitude" use="required" />
+        <xs:attribute name="min-lon" type="tns:longitude" use="required" />
+        <xs:attribute name="max-lat" type="tns:latitude" use="required" />
+        <xs:attribute name="max-lon" type="tns:longitude" use="required" />
+    </xs:complexType>
 
-	<xs:complexType name="projections">
-		<xs:sequence>
-			<!-- TODO: find an easy way to validate projections codes -->
-			<xs:element name="code" minOccurs="0" maxOccurs="unbounded" type="xs:string" />
-		</xs:sequence>
-	</xs:complexType>
+    <xs:complexType name="projections">
+        <xs:sequence>
+            <!-- TODO: find an easy way to validate projections codes -->
+            <xs:element name="code" minOccurs="0" maxOccurs="unbounded" type="xs:string" />
+        </xs:sequence>
+    </xs:complexType>
 
-	<!-- ISO3166-1, taken from http://www.iso.org/iso/country_codes/iso_3166_code_lists.htm + "EU" for Europe -->
-	<xs:simpleType name="iso3166">
-		<xs:restriction base="xs:string">
-			<!-- EUROPE (JOSM ONLY) -->
-			<xs:enumeration value="EU" />
-			<!-- AFGHANISTAN -->
-			<xs:enumeration value="AF" />
-			<!-- ÅLAND ISLANDS -->
-			<xs:enumeration value="AX" />
-			<!-- ALBANIA -->
-			<xs:enumeration value="AL" />
-			<!-- ALGERIA -->
-			<xs:enumeration value="DZ" />
-			<!-- AMERICAN SAMOA -->
-			<xs:enumeration value="AS" />
-			<!-- ANDORRA -->
-			<xs:enumeration value="AD" />
-			<!-- ANGOLA -->
-			<xs:enumeration value="AO" />
-			<!-- ANGUILLA -->
-			<xs:enumeration value="AI" />
-			<!-- ANTARCTICA -->
-			<xs:enumeration value="AQ" />
-			<!-- ANTIGUA AND BARBUDA -->
-			<xs:enumeration value="AG" />
-			<!-- ARGENTINA -->
-			<xs:enumeration value="AR" />
-			<!-- ARMENIA -->
-			<xs:enumeration value="AM" />
-			<!-- ARUBA -->
-			<xs:enumeration value="AW" />
-			<!-- AUSTRALIA -->
-			<xs:enumeration value="AU" />
-			<!-- AUSTRIA -->
-			<xs:enumeration value="AT" />
-			<!-- AZERBAIJAN -->
-			<xs:enumeration value="AZ" />
-			<!-- BAHAMAS -->
-			<xs:enumeration value="BS" />
-			<!-- BAHRAIN -->
-			<xs:enumeration value="BH" />
-			<!-- BANGLADESH -->
-			<xs:enumeration value="BD" />
-			<!-- BARBADOS -->
-			<xs:enumeration value="BB" />
-			<!-- BELARUS -->
-			<xs:enumeration value="BY" />
-			<!-- BELGIUM -->
-			<xs:enumeration value="BE" />
-			<!-- BELIZE -->
-			<xs:enumeration value="BZ" />
-			<!-- BENIN -->
-			<xs:enumeration value="BJ" />
-			<!-- BERMUDA -->
-			<xs:enumeration value="BM" />
-			<!-- BHUTAN -->
-			<xs:enumeration value="BT" />
-			<!-- BOLIVIA, PLURINATIONAL STATE OF -->
-			<xs:enumeration value="BO" />
-			<!-- BONAIRE, SINT EUSTATIUS AND SABA -->
-			<xs:enumeration value="BQ" />
-			<!-- BOSNIA AND HERZEGOVINA -->
-			<xs:enumeration value="BA" />
-			<!-- BOTSWANA -->
-			<xs:enumeration value="BW" />
-			<!-- BOUVET ISLAND -->
-			<xs:enumeration value="BV" />
-			<!-- BRAZIL -->
-			<xs:enumeration value="BR" />
-			<!-- BRITISH INDIAN OCEAN TERRITORY -->
-			<xs:enumeration value="IO" />
-			<!-- BRUNEI DARUSSALAM -->
-			<xs:enumeration value="BN" />
-			<!-- BULGARIA -->
-			<xs:enumeration value="BG" />
-			<!-- BURKINA FASO -->
-			<xs:enumeration value="BF" />
-			<!-- BURUNDI -->
-			<xs:enumeration value="BI" />
-			<!-- CAMBODIA -->
-			<xs:enumeration value="KH" />
-			<!-- CAMEROON -->
-			<xs:enumeration value="CM" />
-			<!-- CANADA -->
-			<xs:enumeration value="CA" />
-			<!-- CAPE VERDE -->
-			<xs:enumeration value="CV" />
-			<!-- CAYMAN ISLANDS -->
-			<xs:enumeration value="KY" />
-			<!-- CENTRAL AFRICAN REPUBLIC -->
-			<xs:enumeration value="CF" />
-			<!-- CHAD -->
-			<xs:enumeration value="TD" />
-			<!-- CHILE -->
-			<xs:enumeration value="CL" />
-			<!-- CHINA -->
-			<xs:enumeration value="CN" />
-			<!-- CHRISTMAS ISLAND -->
-			<xs:enumeration value="CX" />
-			<!-- COCOS (KEELING) ISLANDS -->
-			<xs:enumeration value="CC" />
-			<!-- COLOMBIA -->
-			<xs:enumeration value="CO" />
-			<!-- COMOROS -->
-			<xs:enumeration value="KM" />
-			<!-- CONGO -->
-			<xs:enumeration value="CG" />
-			<!-- CONGO, THE DEMOCRATIC REPUBLIC OF THE -->
-			<xs:enumeration value="CD" />
-			<!-- COOK ISLANDS -->
-			<xs:enumeration value="CK" />
-			<!-- COSTA RICA -->
-			<xs:enumeration value="CR" />
-			<!-- CÔTE D'IVOIRE -->
-			<xs:enumeration value="CI" />
-			<!-- CROATIA -->
-			<xs:enumeration value="HR" />
-			<!-- CUBA -->
-			<xs:enumeration value="CU" />
-			<!-- CURAÇAO -->
-			<xs:enumeration value="CW" />
-			<!-- CYPRUS -->
-			<xs:enumeration value="CY" />
-			<!-- CZECH REPUBLIC -->
-			<xs:enumeration value="CZ" />
-			<!-- DENMARK -->
-			<xs:enumeration value="DK" />
-			<!-- DJIBOUTI -->
-			<xs:enumeration value="DJ" />
-			<!-- DOMINICA -->
-			<xs:enumeration value="DM" />
-			<!-- DOMINICAN REPUBLIC -->
-			<xs:enumeration value="DO" />
-			<!-- ECUADOR -->
-			<xs:enumeration value="EC" />
-			<!-- EGYPT -->
-			<xs:enumeration value="EG" />
-			<!-- EL SALVADOR -->
-			<xs:enumeration value="SV" />
-			<!-- EQUATORIAL GUINEA -->
-			<xs:enumeration value="GQ" />
-			<!-- ERITREA -->
-			<xs:enumeration value="ER" />
-			<!-- ESTONIA -->
-			<xs:enumeration value="EE" />
-			<!-- ETHIOPIA -->
-			<xs:enumeration value="ET" />
-			<!-- FALKLAND ISLANDS (MALVINAS) -->
-			<xs:enumeration value="FK" />
-			<!-- FAROE ISLANDS -->
-			<xs:enumeration value="FO" />
-			<!-- FIJI -->
-			<xs:enumeration value="FJ" />
-			<!-- FINLAND -->
-			<xs:enumeration value="FI" />
-			<!-- FRANCE -->
-			<xs:enumeration value="FR" />
-			<!-- FRENCH GUIANA -->
-			<xs:enumeration value="GF" />
-			<!-- FRENCH POLYNESIA -->
-			<xs:enumeration value="PF" />
-			<!-- FRENCH SOUTHERN TERRITORIES -->
-			<xs:enumeration value="TF" />
-			<!-- GABON -->
-			<xs:enumeration value="GA" />
-			<!-- GAMBIA -->
-			<xs:enumeration value="GM" />
-			<!-- GEORGIA -->
-			<xs:enumeration value="GE" />
-			<!-- GERMANY -->
-			<xs:enumeration value="DE" />
-			<!-- GHANA -->
-			<xs:enumeration value="GH" />
-			<!-- GIBRALTAR -->
-			<xs:enumeration value="GI" />
-			<!-- GREECE -->
-			<xs:enumeration value="GR" />
-			<!-- GREENLAND -->
-			<xs:enumeration value="GL" />
-			<!-- GRENADA -->
-			<xs:enumeration value="GD" />
-			<!-- GUADELOUPE -->
-			<xs:enumeration value="GP" />
-			<!-- GUAM -->
-			<xs:enumeration value="GU" />
-			<!-- GUATEMALA -->
-			<xs:enumeration value="GT" />
-			<!-- GUERNSEY -->
-			<xs:enumeration value="GG" />
-			<!-- GUINEA -->
-			<xs:enumeration value="GN" />
-			<!-- GUINEA-BISSAU -->
-			<xs:enumeration value="GW" />
-			<!-- GUYANA -->
-			<xs:enumeration value="GY" />
-			<!-- HAITI -->
-			<xs:enumeration value="HT" />
-			<!-- HEARD ISLAND AND MCDONALD ISLANDS -->
-			<xs:enumeration value="HM" />
-			<!-- HOLY SEE (VATICAN CITY STATE) -->
-			<xs:enumeration value="VA" />
-			<!-- HONDURAS -->
-			<xs:enumeration value="HN" />
-			<!-- HONG KONG -->
-			<xs:enumeration value="HK" />
-			<!-- HUNGARY -->
-			<xs:enumeration value="HU" />
-			<!-- ICELAND -->
-			<xs:enumeration value="IS" />
-			<!-- INDIA -->
-			<xs:enumeration value="IN" />
-			<!-- INDONESIA -->
-			<xs:enumeration value="ID" />
-			<!-- IRAN, ISLAMIC REPUBLIC OF -->
-			<xs:enumeration value="IR" />
-			<!-- IRAQ -->
-			<xs:enumeration value="IQ" />
-			<!-- IRELAND -->
-			<xs:enumeration value="IE" />
-			<!-- ISLE OF MAN -->
-			<xs:enumeration value="IM" />
-			<!-- ISRAEL -->
-			<xs:enumeration value="IL" />
-			<!-- ITALY -->
-			<xs:enumeration value="IT" />
-			<!-- JAMAICA -->
-			<xs:enumeration value="JM" />
-			<!-- JAPAN -->
-			<xs:enumeration value="JP" />
-			<!-- JERSEY -->
-			<xs:enumeration value="JE" />
-			<!-- JORDAN -->
-			<xs:enumeration value="JO" />
-			<!-- KAZAKHSTAN -->
-			<xs:enumeration value="KZ" />
-			<!-- KENYA -->
-			<xs:enumeration value="KE" />
-			<!-- KIRIBATI -->
-			<xs:enumeration value="KI" />
-			<!-- KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF -->
-			<xs:enumeration value="KP" />
-			<!-- KOREA, REPUBLIC OF -->
-			<xs:enumeration value="KR" />
-			<!-- KUWAIT -->
-			<xs:enumeration value="KW" />
-			<!-- KYRGYZSTAN -->
-			<xs:enumeration value="KG" />
-			<!-- LAO PEOPLE'S DEMOCRATIC REPUBLIC -->
-			<xs:enumeration value="LA" />
-			<!-- LATVIA -->
-			<xs:enumeration value="LV" />
-			<!-- LEBANON -->
-			<xs:enumeration value="LB" />
-			<!-- LESOTHO -->
-			<xs:enumeration value="LS" />
-			<!-- LIBERIA -->
-			<xs:enumeration value="LR" />
-			<!-- LIBYAN ARAB JAMAHIRIYA -->
-			<xs:enumeration value="LY" />
-			<!-- LIECHTENSTEIN -->
-			<xs:enumeration value="LI" />
-			<!-- LITHUANIA -->
-			<xs:enumeration value="LT" />
-			<!-- LUXEMBOURG -->
-			<xs:enumeration value="LU" />
-			<!-- MACAO -->
-			<xs:enumeration value="MO" />
-			<!-- MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF -->
-			<xs:enumeration value="MK" />
-			<!-- MADAGASCAR -->
-			<xs:enumeration value="MG" />
-			<!-- MALAWI -->
-			<xs:enumeration value="MW" />
-			<!-- MALAYSIA -->
-			<xs:enumeration value="MY" />
-			<!-- MALDIVES -->
-			<xs:enumeration value="MV" />
-			<!-- MALI -->
-			<xs:enumeration value="ML" />
-			<!-- MALTA -->
-			<xs:enumeration value="MT" />
-			<!-- MARSHALL ISLANDS -->
-			<xs:enumeration value="MH" />
-			<!-- MARTINIQUE -->
-			<xs:enumeration value="MQ" />
-			<!-- MAURITANIA -->
-			<xs:enumeration value="MR" />
-			<!-- MAURITIUS -->
-			<xs:enumeration value="MU" />
-			<!-- MAYOTTE -->
-			<xs:enumeration value="YT" />
-			<!-- MEXICO -->
-			<xs:enumeration value="MX" />
-			<!-- MICRONESIA, FEDERATED STATES OF -->
-			<xs:enumeration value="FM" />
-			<!-- MOLDOVA, REPUBLIC OF -->
-			<xs:enumeration value="MD" />
-			<!-- MONACO -->
-			<xs:enumeration value="MC" />
-			<!-- MONGOLIA -->
-			<xs:enumeration value="MN" />
-			<!-- MONTENEGRO -->
-			<xs:enumeration value="ME" />
-			<!-- MONTSERRAT -->
-			<xs:enumeration value="MS" />
-			<!-- MOROCCO -->
-			<xs:enumeration value="MA" />
-			<!-- MOZAMBIQUE -->
-			<xs:enumeration value="MZ" />
-			<!-- MYANMAR -->
-			<xs:enumeration value="MM" />
-			<!-- NAMIBIA -->
-			<xs:enumeration value="NA" />
-			<!-- NAURU -->
-			<xs:enumeration value="NR" />
-			<!-- NEPAL -->
-			<xs:enumeration value="NP" />
-			<!-- NETHERLANDS -->
-			<xs:enumeration value="NL" />
-			<!-- NEW CALEDONIA -->
-			<xs:enumeration value="NC" />
-			<!-- NEW ZEALAND -->
-			<xs:enumeration value="NZ" />
-			<!-- NICARAGUA -->
-			<xs:enumeration value="NI" />
-			<!-- NIGER -->
-			<xs:enumeration value="NE" />
-			<!-- NIGERIA -->
-			<xs:enumeration value="NG" />
-			<!-- NIUE -->
-			<xs:enumeration value="NU" />
-			<!-- NORFOLK ISLAND -->
-			<xs:enumeration value="NF" />
-			<!-- NORTHERN MARIANA ISLANDS -->
-			<xs:enumeration value="MP" />
-			<!-- NORWAY -->
-			<xs:enumeration value="NO" />
-			<!-- OMAN -->
-			<xs:enumeration value="OM" />
-			<!-- PAKISTAN -->
-			<xs:enumeration value="PK" />
-			<!-- PALAU -->
-			<xs:enumeration value="PW" />
-			<!-- PALESTINIAN TERRITORY, OCCUPIED -->
-			<xs:enumeration value="PS" />
-			<!-- PANAMA -->
-			<xs:enumeration value="PA" />
-			<!-- PAPUA NEW GUINEA -->
-			<xs:enumeration value="PG" />
-			<!-- PARAGUAY -->
-			<xs:enumeration value="PY" />
-			<!-- PERU -->
-			<xs:enumeration value="PE" />
-			<!-- PHILIPPINES -->
-			<xs:enumeration value="PH" />
-			<!-- PITCAIRN -->
-			<xs:enumeration value="PN" />
-			<!-- POLAND -->
-			<xs:enumeration value="PL" />
-			<!-- PORTUGAL -->
-			<xs:enumeration value="PT" />
-			<!-- PUERTO RICO -->
-			<xs:enumeration value="PR" />
-			<!-- QATAR -->
-			<xs:enumeration value="QA" />
-			<!-- RÉUNION -->
-			<xs:enumeration value="RE" />
-			<!-- ROMANIA -->
-			<xs:enumeration value="RO" />
-			<!-- RUSSIAN FEDERATION -->
-			<xs:enumeration value="RU" />
-			<!-- RWANDA -->
-			<xs:enumeration value="RW" />
-			<!-- SAINT BARTHÉLEMY -->
-			<xs:enumeration value="BL" />
-			<!-- SAINT HELENA, ASCENSION AND TRISTAN DA CUNHA -->
-			<xs:enumeration value="SH" />
-			<!-- SAINT KITTS AND NEVIS -->
-			<xs:enumeration value="KN" />
-			<!-- SAINT LUCIA -->
-			<xs:enumeration value="LC" />
-			<!-- SAINT MARTIN (FRENCH PART) -->
-			<xs:enumeration value="MF" />
-			<!-- SAINT PIERRE AND MIQUELON -->
-			<xs:enumeration value="PM" />
-			<!-- SAINT VINCENT AND THE GRENADINES -->
-			<xs:enumeration value="VC" />
-			<!-- SAMOA -->
-			<xs:enumeration value="WS" />
-			<!-- SAN MARINO -->
-			<xs:enumeration value="SM" />
-			<!-- SAO TOME AND PRINCIPE -->
-			<xs:enumeration value="ST" />
-			<!-- SAUDI ARABIA -->
-			<xs:enumeration value="SA" />
-			<!-- SENEGAL -->
-			<xs:enumeration value="SN" />
-			<!-- SERBIA -->
-			<xs:enumeration value="RS" />
-			<!-- SEYCHELLES -->
-			<xs:enumeration value="SC" />
-			<!-- SIERRA LEONE -->
-			<xs:enumeration value="SL" />
-			<!-- SINGAPORE -->
-			<xs:enumeration value="SG" />
-			<!-- SINT MAARTEN (DUTCH PART) -->
-			<xs:enumeration value="SX" />
-			<!-- SLOVAKIA -->
-			<xs:enumeration value="SK" />
-			<!-- SLOVENIA -->
-			<xs:enumeration value="SI" />
-			<!-- SOLOMON ISLANDS -->
-			<xs:enumeration value="SB" />
-			<!-- SOMALIA -->
-			<xs:enumeration value="SO" />
-			<!-- SOUTH AFRICA -->
-			<xs:enumeration value="ZA" />
-			<!-- SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS -->
-			<xs:enumeration value="GS" />
-			<!-- SOUTH SUDAN -->
-			<xs:enumeration value="SS" />
-			<!-- SPAIN -->
-			<xs:enumeration value="ES" />
-			<!-- SRI LANKA -->
-			<xs:enumeration value="LK" />
-			<!-- SUDAN -->
-			<xs:enumeration value="SD" />
-			<!-- SURINAME -->
-			<xs:enumeration value="SR" />
-			<!-- SVALBARD AND JAN MAYEN -->
-			<xs:enumeration value="SJ" />
-			<!-- SWAZILAND -->
-			<xs:enumeration value="SZ" />
-			<!-- SWEDEN -->
-			<xs:enumeration value="SE" />
-			<!-- SWITZERLAND -->
-			<xs:enumeration value="CH" />
-			<!-- SYRIAN ARAB REPUBLIC -->
-			<xs:enumeration value="SY" />
-			<!-- TAIWAN, PROVINCE OF CHINA -->
-			<xs:enumeration value="TW" />
-			<!-- TAJIKISTAN -->
-			<xs:enumeration value="TJ" />
-			<!-- TANZANIA, UNITED REPUBLIC OF -->
-			<xs:enumeration value="TZ" />
-			<!-- THAILAND -->
-			<xs:enumeration value="TH" />
-			<!-- TIMOR-LESTE -->
-			<xs:enumeration value="TL" />
-			<!-- TOGO -->
-			<xs:enumeration value="TG" />
-			<!-- TOKELAU -->
-			<xs:enumeration value="TK" />
-			<!-- TONGA -->
-			<xs:enumeration value="TO" />
-			<!-- TRINIDAD AND TOBAGO -->
-			<xs:enumeration value="TT" />
-			<!-- TUNISIA -->
-			<xs:enumeration value="TN" />
-			<!-- TURKEY -->
-			<xs:enumeration value="TR" />
-			<!-- TURKMENISTAN -->
-			<xs:enumeration value="TM" />
-			<!-- TURKS AND CAICOS ISLANDS -->
-			<xs:enumeration value="TC" />
-			<!-- TUVALU -->
-			<xs:enumeration value="TV" />
-			<!-- UGANDA -->
-			<xs:enumeration value="UG" />
-			<!-- UKRAINE -->
-			<xs:enumeration value="UA" />
-			<!-- UNITED ARAB EMIRATES -->
-			<xs:enumeration value="AE" />
-			<!-- UNITED KINGDOM -->
-			<xs:enumeration value="GB" />
-			<!-- UNITED STATES -->
-			<xs:enumeration value="US" />
-			<!-- UNITED STATES MINOR OUTLYING ISLANDS -->
-			<xs:enumeration value="UM" />
-			<!-- URUGUAY -->
-			<xs:enumeration value="UY" />
-			<!-- UZBEKISTAN -->
-			<xs:enumeration value="UZ" />
-			<!-- VANUATU -->
-			<xs:enumeration value="VU" />
-			<!-- VENEZUELA, BOLIVARIAN REPUBLIC OF -->
-			<xs:enumeration value="VE" />
-			<!-- VIET NAM -->
-			<xs:enumeration value="VN" />
-			<!-- VIRGIN ISLANDS, BRITISH -->
-			<xs:enumeration value="VG" />
-			<!-- VIRGIN ISLANDS, U.S. -->
-			<xs:enumeration value="VI" />
-			<!-- WALLIS AND FUTUNA -->
-			<xs:enumeration value="WF" />
-			<!-- WESTERN SAHARA -->
-			<xs:enumeration value="EH" />
-			<!-- YEMEN -->
-			<xs:enumeration value="YE" />
-			<!-- ZAMBIA -->
-			<xs:enumeration value="ZM" />
-			<!-- ZIMBABWE -->
-			<xs:enumeration value="ZW" />
-		</xs:restriction>
-	</xs:simpleType>
+    <!-- ISO3166-1, taken from http://www.iso.org/iso/country_codes/iso_3166_code_lists.htm + "EU" for Europe -->
+    <xs:simpleType name="iso3166">
+        <xs:restriction base="xs:string">
+            <!-- EUROPE (JOSM ONLY) -->
+            <xs:enumeration value="EU" />
+            <!-- AFGHANISTAN -->
+            <xs:enumeration value="AF" />
+            <!-- ÅLAND ISLANDS -->
+            <xs:enumeration value="AX" />
+            <!-- ALBANIA -->
+            <xs:enumeration value="AL" />
+            <!-- ALGERIA -->
+            <xs:enumeration value="DZ" />
+            <!-- AMERICAN SAMOA -->
+            <xs:enumeration value="AS" />
+            <!-- ANDORRA -->
+            <xs:enumeration value="AD" />
+            <!-- ANGOLA -->
+            <xs:enumeration value="AO" />
+            <!-- ANGUILLA -->
+            <xs:enumeration value="AI" />
+            <!-- ANTARCTICA -->
+            <xs:enumeration value="AQ" />
+            <!-- ANTIGUA AND BARBUDA -->
+            <xs:enumeration value="AG" />
+            <!-- ARGENTINA -->
+            <xs:enumeration value="AR" />
+            <!-- ARMENIA -->
+            <xs:enumeration value="AM" />
+            <!-- ARUBA -->
+            <xs:enumeration value="AW" />
+            <!-- AUSTRALIA -->
+            <xs:enumeration value="AU" />
+            <!-- AUSTRIA -->
+            <xs:enumeration value="AT" />
+            <!-- AZERBAIJAN -->
+            <xs:enumeration value="AZ" />
+            <!-- BAHAMAS -->
+            <xs:enumeration value="BS" />
+            <!-- BAHRAIN -->
+            <xs:enumeration value="BH" />
+            <!-- BANGLADESH -->
+            <xs:enumeration value="BD" />
+            <!-- BARBADOS -->
+            <xs:enumeration value="BB" />
+            <!-- BELARUS -->
+            <xs:enumeration value="BY" />
+            <!-- BELGIUM -->
+            <xs:enumeration value="BE" />
+            <!-- BELIZE -->
+            <xs:enumeration value="BZ" />
+            <!-- BENIN -->
+            <xs:enumeration value="BJ" />
+            <!-- BERMUDA -->
+            <xs:enumeration value="BM" />
+            <!-- BHUTAN -->
+            <xs:enumeration value="BT" />
+            <!-- BOLIVIA, PLURINATIONAL STATE OF -->
+            <xs:enumeration value="BO" />
+            <!-- BONAIRE, SINT EUSTATIUS AND SABA -->
+            <xs:enumeration value="BQ" />
+            <!-- BOSNIA AND HERZEGOVINA -->
+            <xs:enumeration value="BA" />
+            <!-- BOTSWANA -->
+            <xs:enumeration value="BW" />
+            <!-- BOUVET ISLAND -->
+            <xs:enumeration value="BV" />
+            <!-- BRAZIL -->
+            <xs:enumeration value="BR" />
+            <!-- BRITISH INDIAN OCEAN TERRITORY -->
+            <xs:enumeration value="IO" />
+            <!-- BRUNEI DARUSSALAM -->
+            <xs:enumeration value="BN" />
+            <!-- BULGARIA -->
+            <xs:enumeration value="BG" />
+            <!-- BURKINA FASO -->
+            <xs:enumeration value="BF" />
+            <!-- BURUNDI -->
+            <xs:enumeration value="BI" />
+            <!-- CAMBODIA -->
+            <xs:enumeration value="KH" />
+            <!-- CAMEROON -->
+            <xs:enumeration value="CM" />
+            <!-- CANADA -->
+            <xs:enumeration value="CA" />
+            <!-- CAPE VERDE -->
+            <xs:enumeration value="CV" />
+            <!-- CAYMAN ISLANDS -->
+            <xs:enumeration value="KY" />
+            <!-- CENTRAL AFRICAN REPUBLIC -->
+            <xs:enumeration value="CF" />
+            <!-- CHAD -->
+            <xs:enumeration value="TD" />
+            <!-- CHILE -->
+            <xs:enumeration value="CL" />
+            <!-- CHINA -->
+            <xs:enumeration value="CN" />
+            <!-- CHRISTMAS ISLAND -->
+            <xs:enumeration value="CX" />
+            <!-- COCOS (KEELING) ISLANDS -->
+            <xs:enumeration value="CC" />
+            <!-- COLOMBIA -->
+            <xs:enumeration value="CO" />
+            <!-- COMOROS -->
+            <xs:enumeration value="KM" />
+            <!-- CONGO -->
+            <xs:enumeration value="CG" />
+            <!-- CONGO, THE DEMOCRATIC REPUBLIC OF THE -->
+            <xs:enumeration value="CD" />
+            <!-- COOK ISLANDS -->
+            <xs:enumeration value="CK" />
+            <!-- COSTA RICA -->
+            <xs:enumeration value="CR" />
+            <!-- CÔTE D'IVOIRE -->
+            <xs:enumeration value="CI" />
+            <!-- CROATIA -->
+            <xs:enumeration value="HR" />
+            <!-- CUBA -->
+            <xs:enumeration value="CU" />
+            <!-- CURAÇAO -->
+            <xs:enumeration value="CW" />
+            <!-- CYPRUS -->
+            <xs:enumeration value="CY" />
+            <!-- CZECH REPUBLIC -->
+            <xs:enumeration value="CZ" />
+            <!-- DENMARK -->
+            <xs:enumeration value="DK" />
+            <!-- DJIBOUTI -->
+            <xs:enumeration value="DJ" />
+            <!-- DOMINICA -->
+            <xs:enumeration value="DM" />
+            <!-- DOMINICAN REPUBLIC -->
+            <xs:enumeration value="DO" />
+            <!-- ECUADOR -->
+            <xs:enumeration value="EC" />
+            <!-- EGYPT -->
+            <xs:enumeration value="EG" />
+            <!-- EL SALVADOR -->
+            <xs:enumeration value="SV" />
+            <!-- EQUATORIAL GUINEA -->
+            <xs:enumeration value="GQ" />
+            <!-- ERITREA -->
+            <xs:enumeration value="ER" />
+            <!-- ESTONIA -->
+            <xs:enumeration value="EE" />
+            <!-- ETHIOPIA -->
+            <xs:enumeration value="ET" />
+            <!-- FALKLAND ISLANDS (MALVINAS) -->
+            <xs:enumeration value="FK" />
+            <!-- FAROE ISLANDS -->
+            <xs:enumeration value="FO" />
+            <!-- FIJI -->
+            <xs:enumeration value="FJ" />
+            <!-- FINLAND -->
+            <xs:enumeration value="FI" />
+            <!-- FRANCE -->
+            <xs:enumeration value="FR" />
+            <!-- FRENCH GUIANA -->
+            <xs:enumeration value="GF" />
+            <!-- FRENCH POLYNESIA -->
+            <xs:enumeration value="PF" />
+            <!-- FRENCH SOUTHERN TERRITORIES -->
+            <xs:enumeration value="TF" />
+            <!-- GABON -->
+            <xs:enumeration value="GA" />
+            <!-- GAMBIA -->
+            <xs:enumeration value="GM" />
+            <!-- GEORGIA -->
+            <xs:enumeration value="GE" />
+            <!-- GERMANY -->
+            <xs:enumeration value="DE" />
+            <!-- GHANA -->
+            <xs:enumeration value="GH" />
+            <!-- GIBRALTAR -->
+            <xs:enumeration value="GI" />
+            <!-- GREECE -->
+            <xs:enumeration value="GR" />
+            <!-- GREENLAND -->
+            <xs:enumeration value="GL" />
+            <!-- GRENADA -->
+            <xs:enumeration value="GD" />
+            <!-- GUADELOUPE -->
+            <xs:enumeration value="GP" />
+            <!-- GUAM -->
+            <xs:enumeration value="GU" />
+            <!-- GUATEMALA -->
+            <xs:enumeration value="GT" />
+            <!-- GUERNSEY -->
+            <xs:enumeration value="GG" />
+            <!-- GUINEA -->
+            <xs:enumeration value="GN" />
+            <!-- GUINEA-BISSAU -->
+            <xs:enumeration value="GW" />
+            <!-- GUYANA -->
+            <xs:enumeration value="GY" />
+            <!-- HAITI -->
+            <xs:enumeration value="HT" />
+            <!-- HEARD ISLAND AND MCDONALD ISLANDS -->
+            <xs:enumeration value="HM" />
+            <!-- HOLY SEE (VATICAN CITY STATE) -->
+            <xs:enumeration value="VA" />
+            <!-- HONDURAS -->
+            <xs:enumeration value="HN" />
+            <!-- HONG KONG -->
+            <xs:enumeration value="HK" />
+            <!-- HUNGARY -->
+            <xs:enumeration value="HU" />
+            <!-- ICELAND -->
+            <xs:enumeration value="IS" />
+            <!-- INDIA -->
+            <xs:enumeration value="IN" />
+            <!-- INDONESIA -->
+            <xs:enumeration value="ID" />
+            <!-- IRAN, ISLAMIC REPUBLIC OF -->
+            <xs:enumeration value="IR" />
+            <!-- IRAQ -->
+            <xs:enumeration value="IQ" />
+            <!-- IRELAND -->
+            <xs:enumeration value="IE" />
+            <!-- ISLE OF MAN -->
+            <xs:enumeration value="IM" />
+            <!-- ISRAEL -->
+            <xs:enumeration value="IL" />
+            <!-- ITALY -->
+            <xs:enumeration value="IT" />
+            <!-- JAMAICA -->
+            <xs:enumeration value="JM" />
+            <!-- JAPAN -->
+            <xs:enumeration value="JP" />
+            <!-- JERSEY -->
+            <xs:enumeration value="JE" />
+            <!-- JORDAN -->
+            <xs:enumeration value="JO" />
+            <!-- KAZAKHSTAN -->
+            <xs:enumeration value="KZ" />
+            <!-- KENYA -->
+            <xs:enumeration value="KE" />
+            <!-- KIRIBATI -->
+            <xs:enumeration value="KI" />
+            <!-- KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF -->
+            <xs:enumeration value="KP" />
+            <!-- KOREA, REPUBLIC OF -->
+            <xs:enumeration value="KR" />
+            <!-- KUWAIT -->
+            <xs:enumeration value="KW" />
+            <!-- KYRGYZSTAN -->
+            <xs:enumeration value="KG" />
+            <!-- LAO PEOPLE'S DEMOCRATIC REPUBLIC -->
+            <xs:enumeration value="LA" />
+            <!-- LATVIA -->
+            <xs:enumeration value="LV" />
+            <!-- LEBANON -->
+            <xs:enumeration value="LB" />
+            <!-- LESOTHO -->
+            <xs:enumeration value="LS" />
+            <!-- LIBERIA -->
+            <xs:enumeration value="LR" />
+            <!-- LIBYAN ARAB JAMAHIRIYA -->
+            <xs:enumeration value="LY" />
+            <!-- LIECHTENSTEIN -->
+            <xs:enumeration value="LI" />
+            <!-- LITHUANIA -->
+            <xs:enumeration value="LT" />
+            <!-- LUXEMBOURG -->
+            <xs:enumeration value="LU" />
+            <!-- MACAO -->
+            <xs:enumeration value="MO" />
+            <!-- MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF -->
+            <xs:enumeration value="MK" />
+            <!-- MADAGASCAR -->
+            <xs:enumeration value="MG" />
+            <!-- MALAWI -->
+            <xs:enumeration value="MW" />
+            <!-- MALAYSIA -->
+            <xs:enumeration value="MY" />
+            <!-- MALDIVES -->
+            <xs:enumeration value="MV" />
+            <!-- MALI -->
+            <xs:enumeration value="ML" />
+            <!-- MALTA -->
+            <xs:enumeration value="MT" />
+            <!-- MARSHALL ISLANDS -->
+            <xs:enumeration value="MH" />
+            <!-- MARTINIQUE -->
+            <xs:enumeration value="MQ" />
+            <!-- MAURITANIA -->
+            <xs:enumeration value="MR" />
+            <!-- MAURITIUS -->
+            <xs:enumeration value="MU" />
+            <!-- MAYOTTE -->
+            <xs:enumeration value="YT" />
+            <!-- MEXICO -->
+            <xs:enumeration value="MX" />
+            <!-- MICRONESIA, FEDERATED STATES OF -->
+            <xs:enumeration value="FM" />
+            <!-- MOLDOVA, REPUBLIC OF -->
+            <xs:enumeration value="MD" />
+            <!-- MONACO -->
+            <xs:enumeration value="MC" />
+            <!-- MONGOLIA -->
+            <xs:enumeration value="MN" />
+            <!-- MONTENEGRO -->
+            <xs:enumeration value="ME" />
+            <!-- MONTSERRAT -->
+            <xs:enumeration value="MS" />
+            <!-- MOROCCO -->
+            <xs:enumeration value="MA" />
+            <!-- MOZAMBIQUE -->
+            <xs:enumeration value="MZ" />
+            <!-- MYANMAR -->
+            <xs:enumeration value="MM" />
+            <!-- NAMIBIA -->
+            <xs:enumeration value="NA" />
+            <!-- NAURU -->
+            <xs:enumeration value="NR" />
+            <!-- NEPAL -->
+            <xs:enumeration value="NP" />
+            <!-- NETHERLANDS -->
+            <xs:enumeration value="NL" />
+            <!-- NEW CALEDONIA -->
+            <xs:enumeration value="NC" />
+            <!-- NEW ZEALAND -->
+            <xs:enumeration value="NZ" />
+            <!-- NICARAGUA -->
+            <xs:enumeration value="NI" />
+            <!-- NIGER -->
+            <xs:enumeration value="NE" />
+            <!-- NIGERIA -->
+            <xs:enumeration value="NG" />
+            <!-- NIUE -->
+            <xs:enumeration value="NU" />
+            <!-- NORFOLK ISLAND -->
+            <xs:enumeration value="NF" />
+            <!-- NORTHERN MARIANA ISLANDS -->
+            <xs:enumeration value="MP" />
+            <!-- NORWAY -->
+            <xs:enumeration value="NO" />
+            <!-- OMAN -->
+            <xs:enumeration value="OM" />
+            <!-- PAKISTAN -->
+            <xs:enumeration value="PK" />
+            <!-- PALAU -->
+            <xs:enumeration value="PW" />
+            <!-- PALESTINIAN TERRITORY, OCCUPIED -->
+            <xs:enumeration value="PS" />
+            <!-- PANAMA -->
+            <xs:enumeration value="PA" />
+            <!-- PAPUA NEW GUINEA -->
+            <xs:enumeration value="PG" />
+            <!-- PARAGUAY -->
+            <xs:enumeration value="PY" />
+            <!-- PERU -->
+            <xs:enumeration value="PE" />
+            <!-- PHILIPPINES -->
+            <xs:enumeration value="PH" />
+            <!-- PITCAIRN -->
+            <xs:enumeration value="PN" />
+            <!-- POLAND -->
+            <xs:enumeration value="PL" />
+            <!-- PORTUGAL -->
+            <xs:enumeration value="PT" />
+            <!-- PUERTO RICO -->
+            <xs:enumeration value="PR" />
+            <!-- QATAR -->
+            <xs:enumeration value="QA" />
+            <!-- RÉUNION -->
+            <xs:enumeration value="RE" />
+            <!-- ROMANIA -->
+            <xs:enumeration value="RO" />
+            <!-- RUSSIAN FEDERATION -->
+            <xs:enumeration value="RU" />
+            <!-- RWANDA -->
+            <xs:enumeration value="RW" />
+            <!-- SAINT BARTHÉLEMY -->
+            <xs:enumeration value="BL" />
+            <!-- SAINT HELENA, ASCENSION AND TRISTAN DA CUNHA -->
+            <xs:enumeration value="SH" />
+            <!-- SAINT KITTS AND NEVIS -->
+            <xs:enumeration value="KN" />
+            <!-- SAINT LUCIA -->
+            <xs:enumeration value="LC" />
+            <!-- SAINT MARTIN (FRENCH PART) -->
+            <xs:enumeration value="MF" />
+            <!-- SAINT PIERRE AND MIQUELON -->
+            <xs:enumeration value="PM" />
+            <!-- SAINT VINCENT AND THE GRENADINES -->
+            <xs:enumeration value="VC" />
+            <!-- SAMOA -->
+            <xs:enumeration value="WS" />
+            <!-- SAN MARINO -->
+            <xs:enumeration value="SM" />
+            <!-- SAO TOME AND PRINCIPE -->
+            <xs:enumeration value="ST" />
+            <!-- SAUDI ARABIA -->
+            <xs:enumeration value="SA" />
+            <!-- SENEGAL -->
+            <xs:enumeration value="SN" />
+            <!-- SERBIA -->
+            <xs:enumeration value="RS" />
+            <!-- SEYCHELLES -->
+            <xs:enumeration value="SC" />
+            <!-- SIERRA LEONE -->
+            <xs:enumeration value="SL" />
+            <!-- SINGAPORE -->
+            <xs:enumeration value="SG" />
+            <!-- SINT MAARTEN (DUTCH PART) -->
+            <xs:enumeration value="SX" />
+            <!-- SLOVAKIA -->
+            <xs:enumeration value="SK" />
+            <!-- SLOVENIA -->
+            <xs:enumeration value="SI" />
+            <!-- SOLOMON ISLANDS -->
+            <xs:enumeration value="SB" />
+            <!-- SOMALIA -->
+            <xs:enumeration value="SO" />
+            <!-- SOUTH AFRICA -->
+            <xs:enumeration value="ZA" />
+            <!-- SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS -->
+            <xs:enumeration value="GS" />
+            <!-- SOUTH SUDAN -->
+            <xs:enumeration value="SS" />
+            <!-- SPAIN -->
+            <xs:enumeration value="ES" />
+            <!-- SRI LANKA -->
+            <xs:enumeration value="LK" />
+            <!-- SUDAN -->
+            <xs:enumeration value="SD" />
+            <!-- SURINAME -->
+            <xs:enumeration value="SR" />
+            <!-- SVALBARD AND JAN MAYEN -->
+            <xs:enumeration value="SJ" />
+            <!-- SWAZILAND -->
+            <xs:enumeration value="SZ" />
+            <!-- SWEDEN -->
+            <xs:enumeration value="SE" />
+            <!-- SWITZERLAND -->
+            <xs:enumeration value="CH" />
+            <!-- SYRIAN ARAB REPUBLIC -->
+            <xs:enumeration value="SY" />
+            <!-- TAIWAN, PROVINCE OF CHINA -->
+            <xs:enumeration value="TW" />
+            <!-- TAJIKISTAN -->
+            <xs:enumeration value="TJ" />
+            <!-- TANZANIA, UNITED REPUBLIC OF -->
+            <xs:enumeration value="TZ" />
+            <!-- THAILAND -->
+            <xs:enumeration value="TH" />
+            <!-- TIMOR-LESTE -->
+            <xs:enumeration value="TL" />
+            <!-- TOGO -->
+            <xs:enumeration value="TG" />
+            <!-- TOKELAU -->
+            <xs:enumeration value="TK" />
+            <!-- TONGA -->
+            <xs:enumeration value="TO" />
+            <!-- TRINIDAD AND TOBAGO -->
+            <xs:enumeration value="TT" />
+            <!-- TUNISIA -->
+            <xs:enumeration value="TN" />
+            <!-- TURKEY -->
+            <xs:enumeration value="TR" />
+            <!-- TURKMENISTAN -->
+            <xs:enumeration value="TM" />
+            <!-- TURKS AND CAICOS ISLANDS -->
+            <xs:enumeration value="TC" />
+            <!-- TUVALU -->
+            <xs:enumeration value="TV" />
+            <!-- UGANDA -->
+            <xs:enumeration value="UG" />
+            <!-- UKRAINE -->
+            <xs:enumeration value="UA" />
+            <!-- UNITED ARAB EMIRATES -->
+            <xs:enumeration value="AE" />
+            <!-- UNITED KINGDOM -->
+            <xs:enumeration value="GB" />
+            <!-- UNITED STATES -->
+            <xs:enumeration value="US" />
+            <!-- UNITED STATES MINOR OUTLYING ISLANDS -->
+            <xs:enumeration value="UM" />
+            <!-- URUGUAY -->
+            <xs:enumeration value="UY" />
+            <!-- UZBEKISTAN -->
+            <xs:enumeration value="UZ" />
+            <!-- VANUATU -->
+            <xs:enumeration value="VU" />
+            <!-- VENEZUELA, BOLIVARIAN REPUBLIC OF -->
+            <xs:enumeration value="VE" />
+            <!-- VIET NAM -->
+            <xs:enumeration value="VN" />
+            <!-- VIRGIN ISLANDS, BRITISH -->
+            <xs:enumeration value="VG" />
+            <!-- VIRGIN ISLANDS, U.S. -->
+            <xs:enumeration value="VI" />
+            <!-- WALLIS AND FUTUNA -->
+            <xs:enumeration value="WF" />
+            <!-- WESTERN SAHARA -->
+            <xs:enumeration value="EH" />
+            <!-- YEMEN -->
+            <xs:enumeration value="YE" />
+            <!-- ZAMBIA -->
+            <xs:enumeration value="ZM" />
+            <!-- ZIMBABWE -->
+            <xs:enumeration value="ZW" />
+        </xs:restriction>
+    </xs:simpleType>
 
-	<xs:complexType name="imagery">
-		<xs:sequence>
-			<xs:element name="entry" minOccurs="0" maxOccurs="unbounded">
-				<xs:complexType>
-					<!-- this is actually not fully correct, but XSD does not allow multiple time the
-						same argument in one xs:all, so this sequence/choice combination, which
-						actually allows to much, only description and mirror can appear more than once! -->
-					<xs:sequence>
-						<xs:choice minOccurs="1" maxOccurs="unbounded">
-							<!-- The name of the imagery source -->
-							<xs:element name="name" minOccurs="1" type="tns:name" />
-							<!-- A description of the imagery source -->
-							<xs:element name="description" minOccurs="0" type="tns:description" />
-							<!-- A unique id for the imagery source -->
-							<xs:element name="id" minOccurs="0" maxOccurs="1" type="tns:id" />
-							<!-- The type. Can be tms, wms and html. In addition, there are the special types bing and scanex 
-								with hardcoded behaviour. -->
-							<xs:element name="type" minOccurs="1" maxOccurs="1" type="tns:type" />
-							<!-- To define as default server for this type -->
-							<xs:element name="default" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-							<!-- The URL of the service. Can contain templates, e.g. {zoom} will be replaced by the current 
-								zoom level (see below). The list of services is a XML document, so the '&' character is represented by 
-								'&'. Alternatively, the URL can be wrapped in a <![CDATA[...]]> section. -->
-							<xs:element name="url" minOccurs="1" maxOccurs="1" type="xs:string" />
-							<!-- A list of supported projections (inside <code> tags) -->
-							<xs:element name="projections" minOccurs="0" maxOccurs="1" type="tns:projections" />
-							<!-- TMS only: The minimum zoom level -->
-							<xs:element name="min-zoom" minOccurs="0" maxOccurs="1" type="tns:zoom" />
-							<!-- TMS only: The maximum zoom level. For higher scales, the images of the maximum level is enlarged. -->
-							<xs:element name="max-zoom" minOccurs="0" maxOccurs="1" type="tns:zoom" />
-							<!-- The area of use, e.g. <bounds min-lat='45.7' min-lon='5.9' max-lat='55.0' max-lon='17.3'/> -->
-							<xs:element name="bounds" minOccurs="0" maxOccurs="1" type="tns:bounds" />
-							<!-- Provide a source that this background can be used for OSM. A page on the OSM-wiki with additional explanation and further references is preferred, but other sources (for example the license text) can also be linked. -->
-							<xs:element name="permission-ref" minOccurs="0" maxOccurs="1" type="xs:anyURI" />
-							<!-- A link to an EULA text that has to be accepted by the user, before the imagery source is added. -->
-							<xs:element name="eula" minOccurs="0" maxOccurs="1" type="tns:eula" />
-							<!-- The attribution text to be shown all the time on the map. -->
-							<xs:element name="attribution-text" minOccurs="0" maxOccurs="1" type="tns:attribution-text" />
-							<!-- A link that is opened, when the user clicks on the attribution text -->
-							<xs:element name="attribution-url" minOccurs="0" maxOccurs="1" type="xs:anyURI" />
-							<!-- A image that is displayed as attribution for the imagery background -->
-							<xs:element name="logo-image" minOccurs="0" maxOccurs="1" type="xs:string" />
-							<!-- A link that is opened, when the user clicks on the logo image -->
-							<xs:element name="logo-url" minOccurs="0" maxOccurs="1" type="xs:anyURI" />
-							<!-- terms-of-use text (if missing, default tou text will be used, unless terms-of-use-url is also missing) -->
-							<xs:element name="terms-of-use-text" minOccurs="0" maxOccurs="1" type="xs:string" />
-							<!-- A link that is opened, when the user clicks on the terms-of-use text -->
-							<xs:element name="terms-of-use-url" minOccurs="0" maxOccurs="1" type="xs:string" />
-							<!-- The ISO 3166 country code -->
-							<xs:element name="country-code" minOccurs="0" maxOccurs="1" type="tns:iso3166" />
-							<!-- A base64-encoded image that is displayed as menu/toolbar icon -->
-							<xs:element name="icon" minOccurs="0" maxOccurs="1" type="xs:string" />
-							<!-- Date in form YYYY-MM-DD;YYYY-MM-DD (each element after first year is optional, a single - marks an unknown or open timespan like -;2015) -->
-							<xs:element name="date" minOccurs="0" maxOccurs="1" type="xs:string" />
-							<xs:element name="mirror" minOccurs="0">
-								<xs:complexType>
-									<xs:all>
-										<xs:element name="type" minOccurs="1" maxOccurs="1" type="tns:type" />
-										<xs:element name="url" minOccurs="1" maxOccurs="1" type="xs:string" />
-										<xs:element name="projections" minOccurs="0" maxOccurs="1" type="tns:projections" />
-										<xs:element name="min-zoom" minOccurs="0" maxOccurs="1" type="tns:zoom" />
-										<xs:element name="max-zoom" minOccurs="0" maxOccurs="1" type="tns:zoom" />
-										<xs:element name="tile-size" minOccurs="0" maxOccurs="1" type="xs:positiveInteger" />
-									</xs:all>
-								</xs:complexType>
-							</xs:element>
-							<!-- list of HTTP headers, that indicate "no tile at this zoom level" situation -->
-							<xs:element name="no-tile-header" minOccurs="0" maxOccurs="unbounded">
-								<xs:complexType>
-									<xs:attribute name="name" type="xs:string" />
-									<xs:attribute name="value" type="xs:string" />
-								</xs:complexType>
-							</xs:element>
-							<!-- list of checksums, that indicate "no tile at this zoom level" situation -->
-							<xs:element name="no-tile-checksum" minOccurs="0" maxOccurs="unbounded">
-								<xs:complexType>
-									<xs:attribute name="type" type="xs:string" />
-									<xs:attribute name="value" type="xs:string" />
-								</xs:complexType>
-							</xs:element>
-							<!-- tile size provided by imagery source. Default - 256 -->
-							<xs:element name="tile-size" minOccurs="0" maxOccurs="1" type="xs:positiveInteger" />
-							<!--  HTTP headers that contain valuable information and that will be shown on "Shown Tile Info" dialog -->
-							<xs:element name="metadata-header" minOccurs="0" maxOccurs="unbounded">
-								<xs:complexType>
-									<xs:attribute name="header-name" type="xs:string" />
-									<xs:attribute name="metadata-key" type="xs:string" />
-								</xs:complexType>
-							</xs:element>
-							<!--  is imagery properly georeferenced (i.e. no need to check offsets). Defaults to false. Affects showing warnings. -->
-							<xs:element name="valid-georeference" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-							<!-- does imagery server supports JOSM 4326 to 3857 reprojection and non-square queries. Affects showing warnings. -->
-							<xs:element name="epsg4326to3857Supported" minOccurs="0" maxOccurs="1" type="xs:boolean" />
-						</xs:choice>
-					</xs:sequence>
-					<xs:attribute name="last-check" type="xs:date" use="optional" />
-					<xs:attribute name="eli-best" type="xs:boolean" use="optional" />
-				</xs:complexType>
-			</xs:element>
-		</xs:sequence>
-	</xs:complexType>
+    <xs:complexType name="imagery">
+        <xs:sequence>
+            <xs:element name="entry" minOccurs="0" maxOccurs="unbounded">
+                <xs:complexType>
+                    <!-- this is actually not fully correct, but XSD does not allow multiple time the
+                        same argument in one xs:all, so this sequence/choice combination, which
+                        actually allows to much, only description and mirror can appear more than once! -->
+                    <xs:sequence>
+                        <xs:choice minOccurs="1" maxOccurs="unbounded">
+                            <!-- The name of the imagery source -->
+                            <xs:element name="name" minOccurs="1" type="tns:name" />
+                            <!-- A description of the imagery source -->
+                            <xs:element name="description" minOccurs="0" type="tns:description" />
+                            <!-- A unique id for the imagery source -->
+                            <xs:element name="id" minOccurs="0" maxOccurs="1" type="tns:id" />
+                            <!-- The type. Can be tms, wms and html. In addition, there are the special types bing and scanex 
+                                with hardcoded behaviour. -->
+                            <xs:element name="type" minOccurs="1" maxOccurs="1" type="tns:type" />
+                            <!-- To define as default server for this type -->
+                            <xs:element name="default" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+                            <!-- The URL of the service. Can contain templates, e.g. {zoom} will be replaced by the current 
+                                zoom level (see below). The list of services is a XML document, so the '&' character is represented by 
+                                '&'. Alternatively, the URL can be wrapped in a <![CDATA[...]]> section. -->
+                            <xs:element name="url" minOccurs="1" maxOccurs="1" type="xs:string" />
+                            <!-- A list of supported projections (inside <code> tags) -->
+                            <xs:element name="projections" minOccurs="0" maxOccurs="1" type="tns:projections" />
+                            <!-- TMS only: The minimum zoom level -->
+                            <xs:element name="min-zoom" minOccurs="0" maxOccurs="1" type="tns:zoom" />
+                            <!-- TMS only: The maximum zoom level. For higher scales, the images of the maximum level is enlarged. -->
+                            <xs:element name="max-zoom" minOccurs="0" maxOccurs="1" type="tns:zoom" />
+                            <!-- The area of use, e.g. <bounds min-lat='45.7' min-lon='5.9' max-lat='55.0' max-lon='17.3'/> -->
+                            <xs:element name="bounds" minOccurs="0" maxOccurs="1" type="tns:bounds" />
+                            <!-- Provide a source that this background can be used for OSM. A page on the OSM-wiki with additional explanation and further references is preferred, but other sources (for example the license text) can also be linked. -->
+                            <xs:element name="permission-ref" minOccurs="0" maxOccurs="1" type="xs:anyURI" />
+                            <!-- A link to an EULA text that has to be accepted by the user, before the imagery source is added. -->
+                            <xs:element name="eula" minOccurs="0" maxOccurs="1" type="tns:eula" />
+                            <!-- The attribution text to be shown all the time on the map. -->
+                            <xs:element name="attribution-text" minOccurs="0" maxOccurs="1" type="tns:attribution-text" />
+                            <!-- A link that is opened, when the user clicks on the attribution text -->
+                            <xs:element name="attribution-url" minOccurs="0" maxOccurs="1" type="xs:anyURI" />
+                            <!-- A image that is displayed as attribution for the imagery background -->
+                            <xs:element name="logo-image" minOccurs="0" maxOccurs="1" type="xs:string" />
+                            <!-- A link that is opened, when the user clicks on the logo image -->
+                            <xs:element name="logo-url" minOccurs="0" maxOccurs="1" type="xs:anyURI" />
+                            <!-- terms-of-use text (if missing, default tou text will be used, unless terms-of-use-url is also missing) -->
+                            <xs:element name="terms-of-use-text" minOccurs="0" maxOccurs="1" type="xs:string" />
+                            <!-- A link that is opened, when the user clicks on the terms-of-use text -->
+                            <xs:element name="terms-of-use-url" minOccurs="0" maxOccurs="1" type="xs:string" />
+                            <!-- The ISO 3166 country code -->
+                            <xs:element name="country-code" minOccurs="0" maxOccurs="1" type="tns:iso3166" />
+                            <!-- A base64-encoded image that is displayed as menu/toolbar icon -->
+                            <xs:element name="icon" minOccurs="0" maxOccurs="1" type="xs:string" />
+                            <!-- Date in form YYYY-MM-DD;YYYY-MM-DD (each element after first year is optional, a single - marks an unknown or open timespan like -;2015) -->
+                            <xs:element name="date" minOccurs="0" maxOccurs="1" type="xs:string" />
+                            <xs:element name="mirror" minOccurs="0">
+                                <xs:complexType>
+                                    <xs:all>
+                                        <xs:element name="type" minOccurs="1" maxOccurs="1" type="tns:type" />
+                                        <xs:element name="url" minOccurs="1" maxOccurs="1" type="xs:string" />
+                                        <xs:element name="projections" minOccurs="0" maxOccurs="1" type="tns:projections" />
+                                        <xs:element name="min-zoom" minOccurs="0" maxOccurs="1" type="tns:zoom" />
+                                        <xs:element name="max-zoom" minOccurs="0" maxOccurs="1" type="tns:zoom" />
+                                        <xs:element name="tile-size" minOccurs="0" maxOccurs="1" type="xs:positiveInteger" />
+                                    </xs:all>
+                                </xs:complexType>
+                            </xs:element>
+                            <!-- list of HTTP headers, that indicate "no tile at this zoom level" situation -->
+                            <xs:element name="no-tile-header" minOccurs="0" maxOccurs="unbounded">
+                                <xs:complexType>
+                                    <xs:attribute name="name" type="xs:string" />
+                                    <xs:attribute name="value" type="xs:string" />
+                                </xs:complexType>
+                            </xs:element>
+                            <!-- list of checksums, that indicate "no tile at this zoom level" situation -->
+                            <xs:element name="no-tile-checksum" minOccurs="0" maxOccurs="unbounded">
+                                <xs:complexType>
+                                    <xs:attribute name="type" type="xs:string" />
+                                    <xs:attribute name="value" type="xs:string" />
+                                </xs:complexType>
+                            </xs:element>
+                            <!-- tile size provided by imagery source. Default - 256 -->
+                            <xs:element name="tile-size" minOccurs="0" maxOccurs="1" type="xs:positiveInteger" />
+                            <!--  HTTP headers that contain valuable information and that will be shown on "Shown Tile Info" dialog -->
+                            <xs:element name="metadata-header" minOccurs="0" maxOccurs="unbounded">
+                                <xs:complexType>
+                                    <xs:attribute name="header-name" type="xs:string" />
+                                    <xs:attribute name="metadata-key" type="xs:string" />
+                                </xs:complexType>
+                            </xs:element>
+                            <!--  is imagery properly georeferenced (i.e. no need to check offsets). Defaults to false. Affects showing warnings. -->
+                            <xs:element name="valid-georeference" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+                            <!-- does imagery server supports JOSM 4326 to 3857 reprojection and non-square queries. Affects showing warnings. -->
+                            <xs:element name="epsg4326to3857Supported" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+                        </xs:choice>
+                    </xs:sequence>
+                    <xs:attribute name="last-check" type="xs:date" use="optional" />
+                    <xs:attribute name="eli-best" type="xs:boolean" use="optional" />
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
 
-	<xs:element name="imagery" type="tns:imagery" />
+    <xs:element name="imagery" type="tns:imagery" />
 </xs:schema>
diff --git a/data/projection/ntf_r93_b.gsb b/data/projection/ntf_r93_b.gsb
deleted file mode 100644
index 9a91483..0000000
Binary files a/data/projection/ntf_r93_b.gsb and /dev/null differ
diff --git a/data/tagging-preset.xsd b/data/tagging-preset.xsd
index 26d5002..072f893 100644
--- a/data/tagging-preset.xsd
+++ b/data/tagging-preset.xsd
@@ -1,326 +1,326 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://josm.openstreetmap.de/tagging-preset-1.0"
-	xmlns:tns="http://josm.openstreetmap.de/tagging-preset-1.0"
-	elementFormDefault="qualified">
-
-	<!-- Localized attributes (for example de.description are not supported
-		by xsd, so every element needs <anyAttribute/> To cover at least some common
-		errors, elements have specified prohibited attributes -->
-
-	<element name="annotations" type="tns:root" />
-	<element name="presets" type="tns:root">
-		<unique name="chunk_id">
-			<selector xpath=".//tns:chunk"/>
-			<field xpath="@id"/>
-		</unique>
-		<keyref name="chunk_ref" refer="tns:chunk_id">
-			<selector xpath=".//tns:reference"/>
-			<field xpath="@ref"/>
-		</keyref>
-	</element>
-
-	<complexType name="root">
-		<complexContent>
-			<extension base="tns:group-parent">
-				<attribute name="author" type="string" />
-				<attribute name="version" type="string" />
-				<attribute name="shortdescription" type="string" />
-				<attribute name="description" type="string" />
-				<attribute name="link" type="string" />
-				<attribute name="baselanguage" type="string" />
-
-				<anyAttribute processContents="skip" />
-			</extension>
-		</complexContent>
-	</complexType>
-
-	<complexType name="group-parent">
-		<sequence>
-			<choice minOccurs="1" maxOccurs="unbounded">
-				<element name="chunk" type="tns:chunk"/>
-				<element name="group" type="tns:group" />
-				<element name="item" type="tns:item" />
-				<element name="separator" type="tns:separator" />
-			</choice>
-		</sequence>
-		<attribute name="icon" type="string" />
-
-		<attribute name="type" use="prohibited" />
-		<attribute name="text" use="prohibited" />
-		<anyAttribute processContents="skip" />
-	</complexType>
-
-	<complexType name="group">
-		<complexContent>
-			<extension base="tns:group-parent">
-				<attribute name="name" type="string" use="required" />
-			</extension>
-		</complexContent>
-	</complexType>
-
-	<complexType name="separator" />
-
-	<complexType name="item">
-		<sequence>
-			<choice minOccurs="0" maxOccurs="unbounded">
-				<group ref="tns:optional_elements" />
-				<element name="key" type="tns:key" />
-				<element name="optional" type="tns:optional" minOccurs="0" />
-			</choice>
-			<element name="roles" type="tns:roles" minOccurs="0" maxOccurs="1" />
-		</sequence>
-		<attribute name="name" type="string" use="required" />
-		<attribute name="icon" type="string" />
-		<attribute name="type" type="string" />
-		<attribute name="name_template" type="string"/>
-		<attribute name="name_template_filter" type="string"/>
-		<attribute name="preset_name_label" type="boolean"/>
-
-		<attribute name="text" use="prohibited" />
-		<anyAttribute processContents="skip" />
-	</complexType>
-
-	<complexType name="optional">
-		<group ref="tns:optional_elements" maxOccurs="unbounded" />
-		<attribute name="text" type="string" />
-		<attribute name="text_context" type="string" />
-	</complexType>
-
-	<complexType name="chunk">
-		<choice minOccurs="1" maxOccurs="1">
-			<sequence>
-				<choice minOccurs="1" maxOccurs="unbounded">
-					<group ref="tns:optional_elements" />
-					<element name="key" type="tns:key" />
-					<element name="optional" type="tns:optional" minOccurs="0" />
-				</choice>
-			</sequence>
-			<sequence>
-				<!-- Cannot use tns:list_elements here because reference is present both in optional_elements and list_elements
-				so it violates cos-nonambig: Unique Particle Attribution :
-				<group ref="tns:list_elements" minOccurs="1" maxOccurs="unbounded" />-->
-				<element name="list_entry" type="tns:list_entry" minOccurs="1" maxOccurs="unbounded" />
-			</sequence>
-		</choice>
-		<attribute name="id" type="ID" use="required" />
-	</complexType>
-
-	<complexType name="reference">
-		<attribute name="ref" type="IDREF" use="required" />
-	</complexType>
-
-	<group name="optional_elements">
-		<choice>
-			<element name="label" type="tns:label" />
-			<element name="space" type="tns:space" />
-			<element name="link" type="tns:link" />
-			<element name="preset_link" type="tns:preset_link" />
-			<element name="text" type="tns:text" />
-			<element name="combo" type="tns:combo" />
-			<element name="multiselect" type="tns:multiselect" />
-			<element name="checkgroup" type="tns:checkgroup" />
-			<element name="check" type="tns:check" />
-			<element name="item_separator" type="tns:separator" />
-			<element name="reference" type="tns:reference" />
-		</choice>
-	</group>
-
-	<group name="list_elements">
-		<choice>
-			<element name="list_entry" type="tns:list_entry" />
-			<element name="reference" type="tns:reference" />
-		</choice>
-	</group>
-
-	<complexType name="key">
-		<attribute name="key" type="string" use="required" />
-		<attribute name="value" type="string" />
-		<attribute name="match" type="string" />
-	</complexType>
-
-	<complexType name="link">
-		<attribute name="href" type="string" use="required" />
-		<attribute name="text" type="string" />
-		<attribute name="text_context" type="string" />
-
-		<attribute name="name" use="prohibited" />
-		<anyAttribute processContents="skip" />
-	</complexType>
-
-	<complexType name="preset_link">
-		<attribute name="preset_name" type="string" use="required" />
-		<attribute name="name" use="prohibited" />
-	</complexType>
-
-	<complexType name="label">
-		<attribute name="text" type="string" use="required" />
-		<attribute name="text_context" type="string" />
-		<attribute name="icon" type="string" />
-		<attribute name="icon_size" type="integer" />
-
-		<attribute name="name" use="prohibited" />
-		<anyAttribute processContents="skip" />
-	</complexType>
-
-	<complexType name="space" />
-
-	<complexType name="text">
-		<attribute name="key" type="string" use="required" />
-		<attribute name="text" type="string" />
-		<attribute name="text_context" type="string" />
-		<attribute name="default" type="string" />
-		<attribute name="use_last_as_default" type="tns:last_default" />
-		<attribute name="auto_increment" type="string" />
-		<attribute name="match" type="tns:match" />
-		<attribute name="length" type="positiveInteger" />
-		<attribute name="alternative_autocomplete_keys" type="string" />
-
-		<attribute name="type" use="prohibited" />
-		<attribute name="name" use="prohibited" />
-		<attribute name="value" use="prohibited" />
-		<attribute name="values" use="prohibited" />
-		<anyAttribute processContents="skip" />
-	</complexType>
-
-	<complexType name="list_entry">
-		<attribute name="value" type="string" use="required" />
-		<attribute name="value_context" type="string" />
-		<attribute name="display_value" type="string" />
-		<attribute name="short_description" type="string" />
-		<attribute name="icon" type="string" />
-		<attribute name="icon_size" type="integer" />
-		<anyAttribute processContents="skip" />
-	</complexType>
-
-	<complexType name="combo">
-		<!-- use either list_entry's or a combination of values/display_values -->
-		<sequence>
-			<group ref="tns:list_elements" minOccurs="0" maxOccurs="unbounded" />
-		</sequence>
-		<attribute name="key" type="string" use="required" />
-		<attribute name="text" type="string" />
-		<attribute name="text_context" type="string" />
-		<attribute name="values" type="string" />
-		<attribute name="values_from" type="string" />
-		<attribute name="values_context" type="string" />
-		<attribute name="values_no_i18n" type="boolean" />
-		<attribute name="values_sort" type="boolean" />
-		<attribute name="display_values" type="string" />
-		<attribute name="values_searchable" type="boolean" />
-		<attribute name="default" type="string" />
-		<attribute name="use_last_as_default" type="tns:last_default" />
-		<attribute name="delimiter" type="string" />
-		<attribute name="editable" type="boolean" />
-		<attribute name="match" type="tns:match" />
-		<attribute name="length" type="positiveInteger" />
-
-		<attribute name="type" use="prohibited" />
-		<attribute name="value" use="prohibited" />
-		<attribute name="name" use="prohibited" />
-		<attribute name="delete-if-empty" use="prohibited" />
-		<attribute name="display-values" use="prohibited" />
-		<anyAttribute processContents="skip" />
-	</complexType>
-
-	<complexType name="multiselect">
-		<!-- use either list_entry's or a combination of values/display_values -->
-		<sequence>
-			<group ref="tns:list_elements" minOccurs="0" maxOccurs="unbounded" />
-		</sequence>
-		<attribute name="key" type="string" use="required" />
-		<attribute name="text" type="string" />
-		<attribute name="text_context" type="string" />
-		<attribute name="values" type="string" />
-		<attribute name="values_from" type="string" />
-		<attribute name="values_context" type="string" />
-		<attribute name="display_values" type="string" />
-		<attribute name="values_searchable" type="boolean" />
-		<attribute name="default" type="string" />
-		<attribute name="use_last_as_default" type="tns:last_default" />
-		<attribute name="delimiter" type="string" />
-		<attribute name="match" type="tns:match" />
-
-		<attribute name="type" use="prohibited" />
-		<attribute name="value" use="prohibited" />
-		<attribute name="name" use="prohibited" />
-		<attribute name="delete-if-empty" use="prohibited" />
-		<attribute name="display-values" use="prohibited" />
-		<anyAttribute processContents="skip" />
-	</complexType>
-
-	<complexType name="checkgroup">
-		<sequence>
-			<choice minOccurs="1" maxOccurs="unbounded">
-				<element name="check" type="tns:check" />
-			</choice>
-		</sequence>
-		<attribute name="columns" type="positiveInteger" />
-		<anyAttribute processContents="skip" />
-	</complexType>
-
-	<complexType name="check">
-		<attribute name="key" type="string" use="required" />
-		<attribute name="text" type="string" />
-		<attribute name="text_context" type="string" />
-		<attribute name="default" type="tns:check_default" />
-		<attribute name="value_on" type="string" />
-		<attribute name="value_off" type="string" />
-		<attribute name="disable_off" type="boolean" />
-		<attribute name="match" type="tns:match" />
-
-		<attribute name="name" use="prohibited" />
-		<attribute name="type" use="prohibited" />
-		<attribute name="value" use="prohibited" />
-		<anyAttribute processContents="skip" />
-	</complexType>
-
-	<simpleType name="check_default">
-		<restriction base="string">
-			<enumeration value="on" />
-			<enumeration value="off" />
-		</restriction>
-	</simpleType>
-
-	<simpleType name="last_default">
-		<restriction base="string">
-			<enumeration value="true" />
-			<enumeration value="false" />
-			<enumeration value="force" />
-		</restriction>
-	</simpleType>
-
-	<simpleType name="match">
-		<restriction base="string">
-			<enumeration value="none" />
-			<enumeration value="key" />
-			<enumeration value="key!" />
-			<enumeration value="keyvalue" />
+    xmlns:tns="http://josm.openstreetmap.de/tagging-preset-1.0"
+    elementFormDefault="qualified">
+
+    <!-- Localized attributes (for example de.description are not supported
+        by xsd, so every element needs <anyAttribute/> To cover at least some common
+        errors, elements have specified prohibited attributes -->
+
+    <element name="annotations" type="tns:root" />
+    <element name="presets" type="tns:root">
+        <unique name="chunk_id">
+            <selector xpath=".//tns:chunk"/>
+            <field xpath="@id"/>
+        </unique>
+        <keyref name="chunk_ref" refer="tns:chunk_id">
+            <selector xpath=".//tns:reference"/>
+            <field xpath="@ref"/>
+        </keyref>
+    </element>
+
+    <complexType name="root">
+        <complexContent>
+            <extension base="tns:group-parent">
+                <attribute name="author" type="string" />
+                <attribute name="version" type="string" />
+                <attribute name="shortdescription" type="string" />
+                <attribute name="description" type="string" />
+                <attribute name="link" type="string" />
+                <attribute name="baselanguage" type="string" />
+
+                <anyAttribute processContents="skip" />
+            </extension>
+        </complexContent>
+    </complexType>
+
+    <complexType name="group-parent">
+        <sequence>
+            <choice minOccurs="1" maxOccurs="unbounded">
+                <element name="chunk" type="tns:chunk"/>
+                <element name="group" type="tns:group" />
+                <element name="item" type="tns:item" />
+                <element name="separator" type="tns:separator" />
+            </choice>
+        </sequence>
+        <attribute name="icon" type="string" />
+
+        <attribute name="type" use="prohibited" />
+        <attribute name="text" use="prohibited" />
+        <anyAttribute processContents="skip" />
+    </complexType>
+
+    <complexType name="group">
+        <complexContent>
+            <extension base="tns:group-parent">
+                <attribute name="name" type="string" use="required" />
+            </extension>
+        </complexContent>
+    </complexType>
+
+    <complexType name="separator" />
+
+    <complexType name="item">
+        <sequence>
+            <choice minOccurs="0" maxOccurs="unbounded">
+                <group ref="tns:optional_elements" />
+                <element name="key" type="tns:key" />
+                <element name="optional" type="tns:optional" minOccurs="0" />
+            </choice>
+            <element name="roles" type="tns:roles" minOccurs="0" maxOccurs="1" />
+        </sequence>
+        <attribute name="name" type="string" use="required" />
+        <attribute name="icon" type="string" />
+        <attribute name="type" type="string" />
+        <attribute name="name_template" type="string"/>
+        <attribute name="name_template_filter" type="string"/>
+        <attribute name="preset_name_label" type="boolean"/>
+
+        <attribute name="text" use="prohibited" />
+        <anyAttribute processContents="skip" />
+    </complexType>
+
+    <complexType name="optional">
+        <group ref="tns:optional_elements" maxOccurs="unbounded" />
+        <attribute name="text" type="string" />
+        <attribute name="text_context" type="string" />
+    </complexType>
+
+    <complexType name="chunk">
+        <choice minOccurs="1" maxOccurs="1">
+            <sequence>
+                <choice minOccurs="1" maxOccurs="unbounded">
+                    <group ref="tns:optional_elements" />
+                    <element name="key" type="tns:key" />
+                    <element name="optional" type="tns:optional" minOccurs="0" />
+                </choice>
+            </sequence>
+            <sequence>
+                <!-- Cannot use tns:list_elements here because reference is present both in optional_elements and list_elements
+                so it violates cos-nonambig: Unique Particle Attribution :
+                <group ref="tns:list_elements" minOccurs="1" maxOccurs="unbounded" />-->
+                <element name="list_entry" type="tns:list_entry" minOccurs="1" maxOccurs="unbounded" />
+            </sequence>
+        </choice>
+        <attribute name="id" type="ID" use="required" />
+    </complexType>
+
+    <complexType name="reference">
+        <attribute name="ref" type="IDREF" use="required" />
+    </complexType>
+
+    <group name="optional_elements">
+        <choice>
+            <element name="label" type="tns:label" />
+            <element name="space" type="tns:space" />
+            <element name="link" type="tns:link" />
+            <element name="preset_link" type="tns:preset_link" />
+            <element name="text" type="tns:text" />
+            <element name="combo" type="tns:combo" />
+            <element name="multiselect" type="tns:multiselect" />
+            <element name="checkgroup" type="tns:checkgroup" />
+            <element name="check" type="tns:check" />
+            <element name="item_separator" type="tns:separator" />
+            <element name="reference" type="tns:reference" />
+        </choice>
+    </group>
+
+    <group name="list_elements">
+        <choice>
+            <element name="list_entry" type="tns:list_entry" />
+            <element name="reference" type="tns:reference" />
+        </choice>
+    </group>
+
+    <complexType name="key">
+        <attribute name="key" type="string" use="required" />
+        <attribute name="value" type="string" />
+        <attribute name="match" type="string" />
+    </complexType>
+
+    <complexType name="link">
+        <attribute name="href" type="string" use="required" />
+        <attribute name="text" type="string" />
+        <attribute name="text_context" type="string" />
+
+        <attribute name="name" use="prohibited" />
+        <anyAttribute processContents="skip" />
+    </complexType>
+
+    <complexType name="preset_link">
+        <attribute name="preset_name" type="string" use="required" />
+        <attribute name="name" use="prohibited" />
+    </complexType>
+
+    <complexType name="label">
+        <attribute name="text" type="string" use="required" />
+        <attribute name="text_context" type="string" />
+        <attribute name="icon" type="string" />
+        <attribute name="icon_size" type="integer" />
+
+        <attribute name="name" use="prohibited" />
+        <anyAttribute processContents="skip" />
+    </complexType>
+
+    <complexType name="space" />
+
+    <complexType name="text">
+        <attribute name="key" type="string" use="required" />
+        <attribute name="text" type="string" />
+        <attribute name="text_context" type="string" />
+        <attribute name="default" type="string" />
+        <attribute name="use_last_as_default" type="tns:last_default" />
+        <attribute name="auto_increment" type="string" />
+        <attribute name="match" type="tns:match" />
+        <attribute name="length" type="positiveInteger" />
+        <attribute name="alternative_autocomplete_keys" type="string" />
+
+        <attribute name="type" use="prohibited" />
+        <attribute name="name" use="prohibited" />
+        <attribute name="value" use="prohibited" />
+        <attribute name="values" use="prohibited" />
+        <anyAttribute processContents="skip" />
+    </complexType>
+
+    <complexType name="list_entry">
+        <attribute name="value" type="string" use="required" />
+        <attribute name="value_context" type="string" />
+        <attribute name="display_value" type="string" />
+        <attribute name="short_description" type="string" />
+        <attribute name="icon" type="string" />
+        <attribute name="icon_size" type="integer" />
+        <anyAttribute processContents="skip" />
+    </complexType>
+
+    <complexType name="combo">
+        <!-- use either list_entry's or a combination of values/display_values -->
+        <sequence>
+            <group ref="tns:list_elements" minOccurs="0" maxOccurs="unbounded" />
+        </sequence>
+        <attribute name="key" type="string" use="required" />
+        <attribute name="text" type="string" />
+        <attribute name="text_context" type="string" />
+        <attribute name="values" type="string" />
+        <attribute name="values_from" type="string" />
+        <attribute name="values_context" type="string" />
+        <attribute name="values_no_i18n" type="boolean" />
+        <attribute name="values_sort" type="boolean" />
+        <attribute name="display_values" type="string" />
+        <attribute name="values_searchable" type="boolean" />
+        <attribute name="default" type="string" />
+        <attribute name="use_last_as_default" type="tns:last_default" />
+        <attribute name="delimiter" type="string" />
+        <attribute name="editable" type="boolean" />
+        <attribute name="match" type="tns:match" />
+        <attribute name="length" type="positiveInteger" />
+
+        <attribute name="type" use="prohibited" />
+        <attribute name="value" use="prohibited" />
+        <attribute name="name" use="prohibited" />
+        <attribute name="delete-if-empty" use="prohibited" />
+        <attribute name="display-values" use="prohibited" />
+        <anyAttribute processContents="skip" />
+    </complexType>
+
+    <complexType name="multiselect">
+        <!-- use either list_entry's or a combination of values/display_values -->
+        <sequence>
+            <group ref="tns:list_elements" minOccurs="0" maxOccurs="unbounded" />
+        </sequence>
+        <attribute name="key" type="string" use="required" />
+        <attribute name="text" type="string" />
+        <attribute name="text_context" type="string" />
+        <attribute name="values" type="string" />
+        <attribute name="values_from" type="string" />
+        <attribute name="values_context" type="string" />
+        <attribute name="display_values" type="string" />
+        <attribute name="values_searchable" type="boolean" />
+        <attribute name="default" type="string" />
+        <attribute name="use_last_as_default" type="tns:last_default" />
+        <attribute name="delimiter" type="string" />
+        <attribute name="match" type="tns:match" />
+
+        <attribute name="type" use="prohibited" />
+        <attribute name="value" use="prohibited" />
+        <attribute name="name" use="prohibited" />
+        <attribute name="delete-if-empty" use="prohibited" />
+        <attribute name="display-values" use="prohibited" />
+        <anyAttribute processContents="skip" />
+    </complexType>
+
+    <complexType name="checkgroup">
+        <sequence>
+            <choice minOccurs="1" maxOccurs="unbounded">
+                <element name="check" type="tns:check" />
+            </choice>
+        </sequence>
+        <attribute name="columns" type="positiveInteger" />
+        <anyAttribute processContents="skip" />
+    </complexType>
+
+    <complexType name="check">
+        <attribute name="key" type="string" use="required" />
+        <attribute name="text" type="string" />
+        <attribute name="text_context" type="string" />
+        <attribute name="default" type="tns:check_default" />
+        <attribute name="value_on" type="string" />
+        <attribute name="value_off" type="string" />
+        <attribute name="disable_off" type="boolean" />
+        <attribute name="match" type="tns:match" />
+
+        <attribute name="name" use="prohibited" />
+        <attribute name="type" use="prohibited" />
+        <attribute name="value" use="prohibited" />
+        <anyAttribute processContents="skip" />
+    </complexType>
+
+    <simpleType name="check_default">
+        <restriction base="string">
+            <enumeration value="on" />
+            <enumeration value="off" />
+        </restriction>
+    </simpleType>
+
+    <simpleType name="last_default">
+        <restriction base="string">
+            <enumeration value="true" />
+            <enumeration value="false" />
+            <enumeration value="force" />
+        </restriction>
+    </simpleType>
+
+    <simpleType name="match">
+        <restriction base="string">
+            <enumeration value="none" />
+            <enumeration value="key" />
+            <enumeration value="key!" />
+            <enumeration value="keyvalue" />
             <enumeration value="keyvalue!" />
-		</restriction>
-	</simpleType>
-
-	<complexType name="roles">
-		<sequence>
-			<element name="role" type="tns:role" minOccurs="1" maxOccurs="unbounded" />
-		</sequence>
-	</complexType>
-
-	<complexType name="role">
-		<attribute name="key" type="string" />
-		<attribute name="text" type="string" />
-		<attribute name="text_context" type="string" />
-		<attribute name="requisite" type="tns:role_requisite" />
-		<attribute name="type" type="string" />
-		<attribute name="count" type="integer" />
-		<attribute name="member_expression" type="string" />
-		<anyAttribute processContents="skip" />
-	</complexType>
-
-	<simpleType name="role_requisite">
-		<restriction base="string">
-			<enumeration value="required" />
-			<enumeration value="optional" />
-		</restriction>
-	</simpleType>
+        </restriction>
+    </simpleType>
+
+    <complexType name="roles">
+        <sequence>
+            <element name="role" type="tns:role" minOccurs="1" maxOccurs="unbounded" />
+        </sequence>
+    </complexType>
+
+    <complexType name="role">
+        <attribute name="key" type="string" />
+        <attribute name="text" type="string" />
+        <attribute name="text_context" type="string" />
+        <attribute name="requisite" type="tns:role_requisite" />
+        <attribute name="type" type="string" />
+        <attribute name="count" type="integer" />
+        <attribute name="member_expression" type="string" />
+        <anyAttribute processContents="skip" />
+    </complexType>
+
+    <simpleType name="role_requisite">
+        <restriction base="string">
+            <enumeration value="required" />
+            <enumeration value="optional" />
+        </restriction>
+    </simpleType>
 
 </schema>
diff --git a/data/validator/combinations.mapcss b/data/validator/combinations.mapcss
index 0b707b3..9f26b3f 100644
--- a/data/validator/combinations.mapcss
+++ b/data/validator/combinations.mapcss
@@ -336,7 +336,7 @@ way[highway][natural][natural!=ridge],
 }
 
 /* #9593, #11183, #12418, #12761 */
-*[sport][sport!=skiing][!building][!club][tourism != hotel][highway != raceway][leisure !~ /^(sports_centre|stadium|track|pitch|golf_course|water_park|swimming_pool|recreation_ground|ice_rink|horse_riding|fitness_station|bowling_alley)$/][natural !~ /^(beach|bare_rock|cliff|peak|water)$/][amenity !~ /^(pub|restaurant|swimming_pool)$/][landuse !~ /^(recreation_ground|piste|farm|farmland)$/][barrier !~ /^(wall|retaining_wall)$/][!"piste:type"][shop!=sports] {
+*[sport][sport!=skiing][!building][!club][tourism != hotel][highway != raceway][leisure !~ /^(sports_centre|stadium|track|pitch|golf_course|water_park|swimming_pool|recreation_ground|ice_rink|horse_riding|fitness_centre|fitness_station|bowling_alley)$/][natural !~ /^(beach|bare_rock|cliff|peak|water)$/][amenity !~ /^(pub|restaurant|swimming_pool)$/][landuse !~ /^(recreation_ground|piste|farm|farmland)$/][barrier !~ /^(wall|retaining_wall)$/][!"piste:type"][shop!=sports] {
     throwWarning: tr("sport without physical feature");
     group: tr("missing tag");
     assertMatch: "node sport=tennis";
@@ -435,13 +435,12 @@ way[waterway][layer][layer=~/^(-1|-2|-3|-4|-5)$/][!tunnel][culvert!=yes][covered
   fixAdd: "unisex=yes";
 }
 
-/* #13138 */
-area:closed[water][natural!=water][water!=intermittent] { /* water=intermittent is deprecated and has an own warning */
+/* #13138, 14468 */
+area:closed[water][natural!~/water|bay|strait/][water!=intermittent] { /* water=intermittent is deprecated and has an own warning */
   throwWarning: tr("{0} without {1}", "{1.key}", "{2.tag}");
   group: tr("missing tag");
-  fixAdd: "natural=water";
 }
-way!:closed[water][natural!=water][water!=intermittent] {
+way!:closed[water][natural!~/water|bay|strait/][water!=intermittent] {
   throwWarning: tr("{0} without {1}", "{1.key}", "{2.tag}");
   group: tr("missing tag");
 }
diff --git a/data/validator/geometry.mapcss b/data/validator/geometry.mapcss
index 0d554a8..4ae6a91 100644
--- a/data/validator/geometry.mapcss
+++ b/data/validator/geometry.mapcss
@@ -289,9 +289,9 @@ way[waterway=~/^(stream|ditch|river|drain)$/]!:closed >[index=-1] node[natural!=
   throwWarning: tr("Waterway ends without a connection to another waterway or the direction of the waterway is wrong.");
 }
 
-/* #10717 */
-way[natural=coastline] ∈ area[natural=water],
-way[natural=coastline] ∈ area[waterway=riverbank] {
+/* #10717, #14535 */
+way:closed[natural=coastline] ∈ area[natural=water],
+way:closed[natural=coastline] ∈ area[waterway=riverbank] {
   throwError: tr("Coastline inside {1}", "{0.tag}");
 }
 
@@ -301,6 +301,7 @@ way[highway] > node[ford?] { set ford_on_highway; }
 node[ford?]:in-downloaded-area!.ford_on_waterway, node[ford?]:in-downloaded-area!.ford_on_highway {
     throwWarning: tr("{0} should be on the node where {1} and {2} intersect", "ford", "highway", "waterway");
 }
+
 /* #13877 */
 area:closed[waterway = canal][area!=no],
 area:closed[waterway = drain][area!=no],
@@ -308,4 +309,16 @@ area:closed[waterway = ditch][area!=no],
 area:closed[waterway = stream][area!=no],
 area:closed[waterway = river][area!=no] {
   throwWarning: tr("{0} is the tag for the linear waterway. To tag the water area use {1} + {2} instead.", "{1.tag}", "natural=water", "water=*");
+}
+
+/* #14395 */
+way >[index=1] node,
+way >[index=-1] node {
+  set first_last_node;
+}
+way[highway][area!=yes][!tunnel][!covered] > node {
+  set node_in_highway;
+}
+way[building] > node.node_in_highway!.first_last_node {
+  throwWarning: tr("node connects highway and building");
 }
\ No newline at end of file
diff --git a/data/validator/numeric.mapcss b/data/validator/numeric.mapcss
index 5ae3735..c1d2ce5 100644
--- a/data/validator/numeric.mapcss
+++ b/data/validator/numeric.mapcss
@@ -22,21 +22,33 @@
   assertNoMatch: "node layer=-5";
   assertNoMatch: "node layer=0";
   assertNoMatch: "node layer=2";
-  assertNoMatch: "node layer=+5";
+  assertNoMatch: "node layer=+5"; /* this is an invalid value, but this case is already covered by the previous rule */
 }
 
 *[building:levels][building:levels !~ /^(([0-9]|[1-9][0-9]*)(\.5)?)$/],
-*[level][level !~ /^((([0-9]|-[1-9])|[1-9][0-9]*)(\.5)?)(;(([0-9]|-[1-9])|[1-9][0-9]*)(\.5)?)*$|^-0\.5$/] {
+*[level][level !~ /^((((-*[1-9]|[0-9])|-*[1-9][0-9]*)(\.5)?)|-0\.5)(;((((-*[1-9]|[0-9])|-*[1-9][0-9]*)(\.5)?)|-0\.5))*$/] { /* all numbers from -∞ to ∞ in 0.5 steps, optional multiple values seperated by a ; */
   throwWarning: tr("{0} should have numbers only with optional .5 increments", "{0.key}");
   assertMatch: "node level=one";
+  assertMatch: "node level=01";
+  assertMatch: "node level=-03";
+  assertMatch: "node level=-01.5";
+  assertMatch: "node level=2.3";
+  assertMatch: "node level=-0";
   assertNoMatch: "node level=0";
   assertNoMatch: "node level=1";
   assertNoMatch: "node level=-1";
   assertNoMatch: "node level=-0.5";
   assertNoMatch: "node level=1.5";
+  assertNoMatch: "node level=12";
+  assertNoMatch: "node level=0;1";
+  assertNoMatch: "node level=1;1.5";
+  assertNoMatch: "node level=1;0.5";
+  assertNoMatch: "node level=0;-0.5";
+  assertNoMatch: "node level=-0.5;0";
+  assertNoMatch: "node level=-1;-0.5";
   assertNoMatch: "node building:levels=1.5";
   assertMatch: "node building:levels=-1";
-  assertNoMatch: "node building:levels=0";
+  assertNoMatch: "node building:levels=0"; /* valid because there can be building:levels:underground > 0 or roof:levels > 0 */
 }
 
 *[height][height !~ /^(([0-9]+\.?[0-9]*( (m|ft))?)|([1-9][0-9]*\'((10|11|[0-9])((\.[0-9]+)?)\")?))$/] {
diff --git a/data/validator/wikipedia.mapcss b/data/validator/wikipedia.mapcss
index bbcf085..bcc46bd 100644
--- a/data/validator/wikipedia.mapcss
+++ b/data/validator/wikipedia.mapcss
@@ -1,24 +1,145 @@
-/* validation for the wikipedia=* tag - see ticket #8383 */
+/* validation for the wikipedia=* tag - see tickets #8383, #14425 */
 
 /* If there is no language at all, this is broken. Also catches 'wikipedia' used as 'email', 'website', 'ele' [sic!] ... */
-*[wikipedia][wikipedia !~ /^[a-zA-Z_-]{2,12}:/] {
-  throwError: tr("no wikipedia-language given, use ''wikipedia''=''language:page title''");
+*[wikipedia][wikipedia !~ /(?i)^[-a-z]{2,12}:/] {
+  throwError: tr("wikipedia tag has no language given, use ''wikipedia''=''language:page title''");
   assertMatch: "node wikipedia=Foobar";
   assertNoMatch: "node wikipedia=en:Foobar";
   assertNoMatch: "node wikipedia=en-GB:Foobar";
 }
 
-/* Valid languages are extracted from <http://de.wikipedia.org/w/api.php?action=sitematrix&format=xml>, which may change, so this is a warning only. */
-*[wikipedia =~ /^[a-zA-Z_-]{2,12}:/][wikipedia !~ /^https?:\/\//][wikipedia !~ /^(aa|ab|ace|af|ak|als|am|an|ang|ar|arc|arz|as|ast|av|ay|az|ba|bar|bat-smg|bcl|be|be-x-old|bg|bh|bi|bjn|bm|bn|bo|bpy|br|bs|bug|bxr|ca|cbk-zam|cdo|ce|ceb|ch|cho|chr|chy|ckb|co|cr|crh|cs|csb|cu|cv|cy|cz|da|de|diq|dk|dsb|dv|dz|ee|el|eml|en|eo|epo|es|et|eu|ext|fa|ff|fi|fiu-vro|fj|fo|fr|frp|frr|fur|fy|ga|gag|gan|gd|gl|glk|gn|got|gu|gv|ha|hak|haw|he|hi|hif|ho|hr|hsb|ht|hu|hy|hz|ia|id|ie|ig|ii|ik|ilo|io|is|it|iu|ja|j [...]
-  throwWarning: tr("unknown language prefix in wikipedia tag");
+/* Valid languages are extracted from <https://www.wikidata.org/w/api.php?action=help&modules=wbgetentities> (languages field), which may change, so this is a warning only.
+   Also includes "cz" and "be-x-old" because they can be auto-fixed */
+*[wikipedia =~ /(?i)^[-a-z]{2,12}:/][wikipedia !~ /^https?:\/\//][wikipedia !~ /^(aa|ab|ace|ady|ady-cyrl|aeb|aeb-arab|aeb-latn|af|ak|aln|als|am|an|ang|anp|ar|arc|arn|arq|ary|arz|as|ase|ast|av|avk|awa|ay|az|azb|ba|ban|bar|bat-smg|bbc|bbc-latn|bcc|bcl|be|be-tarask|be-x-old|bg|bgn|bh|bho|bi|bjn|bm|bn|bo|bpy|bqi|br|brh|bs|bto|bug|bxr|ca|cbk-zam|cdo|ce|ceb|ch|cho|chr|chy|ckb|co|cps|cr|crh|crh-cyrl|crh-latn|cs|csb|cu|cv|cy|cz|da|de|de-at|de-ch|de-formal|din|diq|dsb|dtp|dty|dv|dz|ee|egl|el|eml| [...]
+  throwWarning: tr("wikipedia tag has an unknown language prefix");
   assertMatch: "node wikipedia=X-Y-Z:Foobar";
   assertNoMatch: "node wikipedia=en:Foobar";
 }
 
-*[wikipedia =~ /https?:\/\//] {
-  throwWarning: tr("deprecated format for wikipedia tag");
+*[wikipedia =~ /^https?:\/\//],
+*[wikipedia =~ /(?i)^[-a-z]{2,12}:https?:\/\//] {
+  throwWarning: tr("wikipedia tag format is deprecated");
   suggestAlternative: tr("''wikipedia''=''language:page title''");
   group: tr("deprecated tagging");
   assertMatch: "node wikipedia=http://en.wikipedia.org/wiki/OpenStreetMap";
   assertNoMatch: "node wikipedia=en:OpenStreetMap";
 }
+
+*[wikipedia =~ /^be-x-old:/] {
+  throwWarning: tr("wikipedia ''{0}'' language is obsolete, use ''{1}'' instead", "be-x-old", "be-tarask");
+  fixAdd: concat("wikipedia=be-tarask:", get(regexp_match("^be-x-old:(.+)$", tag("wikipedia")),1));
+  assertMatch: "node wikipedia=be-x-old:foo";
+  assertNoMatch: "node wikipedia=abe-x-old:foo";
+}
+
+*[wikipedia =~ /^cz:/] {
+  throwWarning: tr("wikipedia ''{0}'' language is invalid, use ''{1}'' instead", "cz", "cs");
+  fixAdd: concat("wikipedia=cs:", get(regexp_match("^cz:(.+)$", tag("wikipedia")),1));
+  assertMatch: "node wikipedia=cz:foo";
+  assertNoMatch: "node wikipedia=en:cz:foo";
+}
+
+*[wikimedia_commons =~ /%[0-9A-F][0-9A-F]/] {
+  throwError: tr("{0} tag should not have URL-encoded values like ''%27''", "{0.key}");
+  fixAdd: concat("wikimedia_commons=", trim(replace(URL_decode(tag("wikimedia_commons")), "_", " ")));
+  assertMatch: "node wikimedia_commons=File:Foo%27s";
+  assertNoMatch: "node wikimedia_commons=File:Foo";
+}
+
+*[wikipedia =~ /(?i)^[-a-z]{2,12}:.*%[0-9A-F][0-9A-F]/] {
+  throwError: tr("{0} tag should not have URL-encoded values like ''%27''", "{0.tag}");
+  fixAdd: concat("wikipedia=", get(regexp_match("^([-a-z]+:)(.*)$", tag("wikipedia")),1), trim(replace(URL_decode(get(regexp_match("^([-a-z]+:)(.+)$", tag("wikipedia")),2)), "_", " ")));
+  assertMatch: "node wikipedia=en:Foo%27s";
+  assertNoMatch: "node wikipedia=en:Foo";
+}
+
+*[wikipedia =~ /(?i)^[-a-z]{2,12}: /] {
+  throwWarning: tr("wikipedia title should not start with a space after language code");
+  fixAdd: concat("wikipedia=", get(regexp_match("^([-a-z]+:)(.*)$", tag("wikipedia")),1), trim(get(regexp_match("^([-a-z]+:)(.*)$", tag("wikipedia")),2)));
+  assertMatch: "node wikipedia=en: foo";
+  assertNoMatch: "node wikipedia=en:foo";
+}
+
+*[wikipedia =~ /(?i)^[-a-z]{2,12}:wiki\//] { 
+  throwWarning: tr("wikipedia title should not have ''{0}'' prefix", "wiki/");
+  fixAdd: concat("wikipedia=", get(regexp_match("^([-a-z]+:)wiki/(.*)$", tag("wikipedia")),1), trim(get(regexp_match("^([-a-z]+:)wiki/(.*)$", tag("wikipedia")),2)));
+  assertMatch: "node wikipedia=en:wiki/foo";
+  assertNoMatch: "node wikipedia=en:foo";
+}
+
+/* All wikipedias except "jbo" automatically capitalize first letter of the page title.
+   To see the latest list, see <https://noc.wikimedia.org/conf/highlight.php?file=InitialiseSettings.php>
+   and look for 'wgCapitalLinks' setting. */
+*[wikipedia =~ /^[-a-zA-Z]{2,12}:\p{Ll}/][wikipedia !~ /^jbo:/][wikipedia !~ /(?i)^[-a-z]{2,12}:https?:/] {
+  throwWarning: tr("wikipedia page title should have first letter capitalized");
+  fixAdd: concat("wikipedia=", get(regexp_match("^([-a-z]+:)(.)(.*)$", tag("wikipedia")),1), upper(get(regexp_match("^([-a-z]+:)(.)(.*)$", tag("wikipedia")),2)), get(regexp_match("^([-a-z]+:)(.)(.*)$", tag("wikipedia")),3));
+  assertMatch: "node wikipedia=en:foo";
+  assertNoMatch: "node wikipedia=en:Foo";
+  assertMatch: "node wikipedia=ru:абв";
+  assertNoMatch: "node wikipedia=ru:Абв";
+}
+
+*[wikipedia =~ /(?i)^[-a-z]{2,12}:.*_/][wikipedia !~ /(?i)^[-a-z]{2,12}:https?:/] {
+  throwWarning: tr("wikipedia page title should have spaces instead of underscores (''_''→'' '')");
+  fixAdd: concat("wikipedia=", get(regexp_match("^([-a-z]+:)(.+)$", tag("wikipedia")),1), trim(replace(get(regexp_match("^([-a-z]+:)(.+)$", tag("wikipedia")),2), "_", " ")));
+  assertMatch: "node wikipedia=en:foo_bar";
+  assertNoMatch: "node wikipedia=en:foo bar";
+}
+
+*[wikipedia ^= "da:da:"],
+*[wikipedia ^= "da:dk:"],
+*[wikipedia ^= "de:de:"],
+*[wikipedia ^= "dk:dk:"],
+*[wikipedia ^= "en:de:"],
+*[wikipedia ^= "en:en:"],
+*[wikipedia ^= "en:es:"],
+*[wikipedia ^= "en:eu:"],
+*[wikipedia ^= "en:fr:"],
+*[wikipedia ^= "en:ja:"],
+*[wikipedia ^= "en:pl:"],
+*[wikipedia ^= "en:pt:"],
+*[wikipedia ^= "en:zh:"],
+*[wikipedia ^= "es:es:"],
+*[wikipedia ^= "eu:eu:"],
+*[wikipedia ^= "fr:fr:"],
+*[wikipedia ^= "ja:ja:"],
+*[wikipedia ^= "pl:en:"],
+*[wikipedia ^= "pl:pl:"],
+*[wikipedia ^= "pt:pt:"],
+*[wikipedia ^= "ru:fr:"],
+*[wikipedia ^= "ru:ru:"],
+*[wikipedia ^= "zh:zh:"] {
+  throwWarning: tr("wikipedia language seems to be duplicated, e.g. en:en:Foo");
+  fixAdd: concat("wikipedia=", get(regexp_match("^([-a-z]+:)([-a-z]+:)(.*)$", tag("wikipedia")),2), trim(get(regexp_match("^([-a-z]+:)([-a-z]+:)(.*)$", tag("wikipedia")),3)));
+  assertMatch: "node wikipedia=en:en:Foo";
+  assertMatch: "node wikipedia=en:fr:Foo";
+  assertNoMatch: "node wikipedia=en:Bar";
+}
+
+/* Detect invalid wikidata tags */
+*[wikidata][wikidata !~ /^Q[1-9][0-9]{0,8}$/] {
+  throwError: tr("wikidata tag must be in Qnnnn format, where n is a digit");
+  assertMatch: "node wikidata=a";
+  assertMatch: "node wikidata=Q";
+  assertMatch: "node wikidata=Q0";
+  assertMatch: "node wikidata=Q0123";
+  assertNoMatch: "node wikidata=Q123";
+  assertNoMatch: "node wikidata=Q1";
+}
+
+/* Wikipedia without wikidata */
+*[wikipedia][!wikidata] {
+  throwOther: tr("wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might help with wikidata id lookups");
+  assertMatch: "node wikipedia=a";
+  assertNoMatch: "node wikipedia=a wikidata=Q123";
+  assertNoMatch: "node wikidata=Q1";
+  assertNoMatch: "node foo=bar";
+}
+
+/* Wikipedia without wikidata */
+*[!wikipedia][/^wikipedia:/] {
+  throwWarning: tr("wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use wikipedia=language:value together with wikidata tag.", "{0.key}");
+  assertMatch: "node wikipedia:en=a";
+  assertNoMatch: "node wikipedia=a wikipedia:en=b";
+  assertNoMatch: "node wikipedia=Foo";
+}
diff --git a/data/projection/BETA2007.gsb b/data_nodist/projection/BETA2007.gsb
similarity index 100%
rename from data/projection/BETA2007.gsb
rename to data_nodist/projection/BETA2007.gsb
diff --git a/data_nodist/projection/CHENYX06_etrs.gsb b/data_nodist/projection/CHENYX06_etrs.gsb
new file mode 100644
index 0000000..4f2c4dc
Binary files /dev/null and b/data_nodist/projection/CHENYX06_etrs.gsb differ
diff --git a/data_nodist/projection/CHENyx06-Distribution.pdf b/data_nodist/projection/CHENyx06-Distribution.pdf
new file mode 100644
index 0000000..27a79df
Binary files /dev/null and b/data_nodist/projection/CHENyx06-Distribution.pdf differ
diff --git a/data_nodist/projection/josm-epsg b/data_nodist/projection/josm-epsg
index 9d21a01..39d60ec 100644
--- a/data_nodist/projection/josm-epsg
+++ b/data_nodist/projection/josm-epsg
@@ -77,7 +77,7 @@
 # WGS 84
 <4326> +proj=lonlat +datum=WGS84 +axis=neu +bounds=-180,-90,180,90  <>
 # Swiss Grid (Switzerland)
-<21781> +proj=somerc +lat_0=46d57'8.66" +lon_0=7d26'22.5" +x_0=600000 +y_0=200000 +ellps=bessel +towgs84=674.374,15.056,405.346 +units=m +bounds=5.7,45.7,10.6,47.9  <>
+<21781> +proj=somerc +lat_0=46d57'8.66" +lon_0=7d26'22.5" +x_0=600000 +y_0=200000 +ellps=bessel +nadgrids=CHENYX06_etrs.gsb +towgs84=674.374,15.056,405.346 +units=m +bounds=5.7,45.7,10.6,47.9  <>
 # HD72 / EOV (Hungary)
 <23700> +proj=somerc +lat_0=47.14439372222222 +lon_0=19.04857177777778 +k_0=0.99993 +x_0=650000 +y_0=200000 +ellps=GRS67 +towgs84=52.17,-71.82,-14.9 +units=m +bounds=16.1200,45.7800,22.9100,48.6000  <>
 # ETRS89 / UTM zone 28N
@@ -103,13 +103,13 @@
 # ETRS89 / UTM zone 38N
 <25838> +proj=utm +zone=38 +ellps=GRS80 +nadgrids=null +units=m +bounds=40,-5,50,85  <>
 # Lambert 4 Zones France (Nord)
-<27561> +proj=lcc +lat_0=49.5 +lat_1=48d35'54.682" +lat_2=50d23'45.282" +lon_0=2d20'14.025" +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +nadgrids=ntf_r93_b.gsb +units=m +bounds=-4.416666666666665,46.65,9.18,51.300000000000004  <>
+<27561> +proj=lcc +lat_0=49.5 +lat_1=48d35'54.682" +lat_2=50d23'45.282" +lon_0=2d20'14.025" +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +nadgrids=ntf_r93.gsb +units=m +bounds=-4.416666666666665,46.65,9.18,51.300000000000004  <>
 # Lambert 4 Zones France (Centre)
-<27562> +proj=lcc +lat_0=46.8 +lat_1=45d53'56.108" +lat_2=47d41'45.652" +lon_0=2d20'14.025" +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +nadgrids=ntf_r93_b.gsb +units=m +bounds=-4.416666666666665,43.95,9.18,49.65  <>
+<27562> +proj=lcc +lat_0=46.8 +lat_1=45d53'56.108" +lat_2=47d41'45.652" +lon_0=2d20'14.025" +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +nadgrids=ntf_r93.gsb +units=m +bounds=-4.416666666666665,43.95,9.18,49.65  <>
 # Lambert 4 Zones France (South)
-<27563> +proj=lcc +lat_0=44.1 +lat_1=43d11'57.449" +lat_2=44d59'45.938" +lon_0=2d20'14.025" +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +nadgrids=ntf_r93_b.gsb +units=m +bounds=-4.416666666666665,41.49,9.18,46.95  <>
+<27563> +proj=lcc +lat_0=44.1 +lat_1=43d11'57.449" +lat_2=44d59'45.938" +lon_0=2d20'14.025" +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +nadgrids=ntf_r93.gsb +units=m +bounds=-4.416666666666665,41.49,9.18,46.95  <>
 # Lambert 4 Zones France (Corsica)
-<27564> +proj=lcc +lat_0=42.165 +lat_1=41d33'37.396" +lat_2=42d46'3.588" +lon_0=2d20'14.025" +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +nadgrids=ntf_r93_b.gsb +units=m +bounds=-4.416666666666665,41.49,9.18,44.267667  <>
+<27564> +proj=lcc +lat_0=42.165 +lat_1=41d33'37.396" +lat_2=42d46'3.588" +lon_0=2d20'14.025" +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +nadgrids=ntf_r93.gsb +units=m +bounds=-4.416666666666665,41.49,9.18,44.267667  <>
 # Rijksdriehoekscoördinaten (Netherlands)
 <28992> +proj=sterea +lat_0=52d9'22.178" +lon_0=5d23'15.5" +k_0=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +towgs84=565.4171,50.3319,465.5524,-0.398957,0.343988,-1.877402,4.0725 +units=m +bounds=3.1,50.56,7.6,53.63  <>
 # Belgian Lambert 1972
diff --git a/data_nodist/projection/ntf_r93.gsb b/data_nodist/projection/ntf_r93.gsb
new file mode 100644
index 0000000..07e34fc
Binary files /dev/null and b/data_nodist/projection/ntf_r93.gsb differ
diff --git a/data_nodist/projection/projection-reference-data b/data_nodist/projection/projection-reference-data
index 133f206..8090806 100644
--- a/data_nodist/projection/projection-reference-data
+++ b/data_nodist/projection/projection-reference-data
@@ -33469,15 +33469,15 @@
     -15.26022969533225,49.68376705555821,-1618494.543914032,539084.117575719
     -6.727564907759373,83.63519833445251,-216874.700708727,4425682.806734157
     36.50142962768149,-4.70135234354907,4678188.079717332,-5406749.218224123
-<EPSG:21781> +proj=somerc +lat_0=46d57'8.66" +lon_0=7d26'22.5" +x_0=600000 +y_0=200000 +ellps=bessel +towgs84=674.374,15.056,405.346 +units=m +bounds=5.7,45.7,10.6,47.9  <>
-    9.82022967492809,45.88641772774894,784866.479906033,84450.743875092
-    8.891588492193241,46.36858378723954,711800.509604853,136280.002175705
-    9.554990703319264,47.19793101821633,760350.003825178,229605.258302477
-    6.242991128633595,46.54193643101183,508290.035152368,155216.546122153
-    7.7372942074149975,46.023753225689774,623127.336453907,96955.745019694
-    7.32895149546506,47.61863020895797,591755.169099147,274223.630384767
-    5.946105825891006,46.25246123668608,484907.564282969,123433.495532274
-    6.512894139499955,45.94531631398674,528207.38771442,88617.071243456
+<EPSG:21781> +proj=somerc +lat_0=46d57'8.66" +lon_0=7d26'22.5" +x_0=600000 +y_0=200000 +ellps=bessel +nadgrids=CHENYX06_etrs.gsb +towgs84=674.374,15.056,405.346 +units=m +bounds=5.7,45.7,10.6,47.9  <>
+    7.938448129853736,46.79465315433036,638158.985520956,182731.071647371
+    7.441723602005019,46.08070477065818,600238.61689251,103243.283478341
+    8.288777166913963,47.46265495427786,664099.893483817,257221.894602634
+    7.437825319631524,46.9366096732191,599938.464581551,198390.971031227
+    6.419341714956735,46.11979656063479,521205.769486789,108101.747007159
+    9.5514416864746,45.724171144382964,764493.431359238,65823.6056569
+    9.873056604271362,47.620151303083325,782984.550667565,277226.14897261
+    8.097837497762685,46.055825668328055,651018.209361449,100691.844768734
 <EPSG:21782> +proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=674.4,15.1,405.3,0,0,0,0 +units=m +no_defs  <>
     3.520346745457715,19.179134404638127,-465079.938639453,-3194627.589840587
     20.896474806192046,17.096302443966916,1632793.095908802,-3310308.592599746
@@ -36862,7 +36862,7 @@
     -40.845409759394045,73.99171715584004,-1075663.991964882,3658253.936298392
     -55.98383921869693,75.63573463956286,-1305237.430092321,4153869.129437317
     72.879933882633,17.159780630468802,7512109.287242818,-227918.925727678
-<EPSG:27561> +proj=lcc +lat_0=49.5 +lat_1=48d35'54.682" +lat_2=50d23'45.282" +lon_0=2d20'14.025" +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +nadgrids=ntf_r93_b.gsb +units=m +bounds=-4.416666666666665,46.65,9.18,51.300000000000004  <>
+<EPSG:27561> +proj=lcc +lat_0=49.5 +lat_1=48d35'54.682" +lat_2=50d23'45.282" +lon_0=2d20'14.025" +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +nadgrids=ntf_r93.gsb +units=m +bounds=-4.416666666666665,46.65,9.18,51.300000000000004  <>
     0.18240099467414606,50.70084348205154,447822.248657583,335749.731598569
     0.9331174400163427,50.72485379853146,500898.93039386,337167.651206067
     2.545955623097825,47.5607234893418,615767.994935354,-15634.238112931
@@ -36871,7 +36871,7 @@
     8.729786901784799,48.67514602151185,1070273.905712521,128243.207736361
     -4.333309987158797,51.19431458229903,134211.681457075,409113.828883267
     1.1731830014909175,50.71607717203845,517834.559535807,335902.29111521
-<EPSG:27562> +proj=lcc +lat_0=46.8 +lat_1=45d53'56.108" +lat_2=47d41'45.652" +lon_0=2d20'14.025" +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +nadgrids=ntf_r93_b.gsb +units=m +bounds=-4.416666666666665,43.95,9.18,49.65  <>
+<EPSG:27562> +proj=lcc +lat_0=46.8 +lat_1=45d53'56.108" +lat_2=47d41'45.652" +lon_0=2d20'14.025" +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +nadgrids=ntf_r93.gsb +units=m +bounds=-4.416666666666665,43.95,9.18,49.65  <>
     -1.1133365185429613,46.3561696607643,334590.433494117,156502.072351671
     3.0874804507525653,45.63813153451019,658552.478959508,71143.221253895
     -4.30607890123232,45.50774208566874,81444.273871585,78297.022365073
@@ -36880,7 +36880,7 @@
     -3.6358996293096366,48.29849657730925,157207.549947712,383442.357958938
     -3.27634515762172,46.42448034097477,168953.266260769,173664.349652023
     -2.0042440238165162,46.66226754677738,267991.824542247,193869.189478427
-<EPSG:27563> +proj=lcc +lat_0=44.1 +lat_1=43d11'57.449" +lat_2=44d59'45.938" +lon_0=2d20'14.025" +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +nadgrids=ntf_r93_b.gsb +units=m +bounds=-4.416666666666665,41.49,9.18,46.95  <>
+<EPSG:27563> +proj=lcc +lat_0=44.1 +lat_1=43d11'57.449" +lat_2=44d59'45.938" +lon_0=2d20'14.025" +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +nadgrids=ntf_r93.gsb +units=m +bounds=-4.416666666666665,41.49,9.18,46.95  <>
     5.248868656095957,46.65569220077895,823071.560393645,488045.265500711
     -3.4493869915884816,44.008526482123635,136434.227145081,206138.130591396
     -2.522629348184635,42.19658971357307,198715.870778788,378.040882879
@@ -36889,7 +36889,7 @@
     -4.007756701040017,43.93963141635213,91193.38038016,201801.774066218
     8.290835975632522,43.39091449780428,1081988.039463948,138654.923060995
     3.5219714239015083,44.69297807859731,693954.617792124,266562.331242614
-<EPSG:27564> +proj=lcc +lat_0=42.165 +lat_1=41d33'37.396" +lat_2=42d46'3.588" +lon_0=2d20'14.025" +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +nadgrids=ntf_r93_b.gsb +units=m +bounds=-4.416666666666665,41.49,9.18,44.267667  <>
+<EPSG:27564> +proj=lcc +lat_0=42.165 +lat_1=41d33'37.396" +lat_2=42d46'3.588" +lon_0=2d20'14.025" +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +nadgrids=ntf_r93.gsb +units=m +bounds=-4.416666666666665,41.49,9.18,44.267667  <>
     -2.544556181890229,43.769485647452164,-392694.173102384,375360.931743444
     5.293428616903728,41.7317796332518,246180.966307288,141998.148829765
     7.009942744222948,43.498911614579974,378103.711394018,344390.960922365
diff --git a/data_nodist/projection/projection-regression-test-data b/data_nodist/projection/projection-regression-test-data
index 32a6e68..7ee5e85 100644
--- a/data_nodist/projection/projection-regression-test-data
+++ b/data_nodist/projection/projection-regression-test-data
@@ -994,8 +994,8 @@ EPSG:21780
   ll2 -44.707754920455834 -118.61699167922754
 EPSG:21781
   ll  46.582471410091934 8.159223152110604
-  en  655231.0208778976 159275.39184032555
-  ll2 46.58247142005926 8.159223160343661
+  en  655230.9360561728 159275.55116362066
+  ll2 46.582471410091884 8.159223152110604
 EPSG:21782
   ll  34.74535187788922 167.90219295117086
   en  1.2532343845140036E7 1.2044444239338348E7
diff --git a/data_nodist/trans/ast.lang b/data_nodist/trans/ast.lang
index a0a03b0..aafb415 100644
Binary files a/data_nodist/trans/ast.lang and b/data_nodist/trans/ast.lang differ
diff --git a/data_nodist/trans/be.lang b/data_nodist/trans/be.lang
index c142238..b20cfdf 100644
Binary files a/data_nodist/trans/be.lang and b/data_nodist/trans/be.lang differ
diff --git a/data_nodist/trans/bg.lang b/data_nodist/trans/bg.lang
index 1778ec9..f5eaf70 100644
Binary files a/data_nodist/trans/bg.lang and b/data_nodist/trans/bg.lang differ
diff --git a/data_nodist/trans/ca-valencia.lang b/data_nodist/trans/ca-valencia.lang
index 25e2883..e57853d 100644
Binary files a/data_nodist/trans/ca-valencia.lang and b/data_nodist/trans/ca-valencia.lang differ
diff --git a/data_nodist/trans/ca.lang b/data_nodist/trans/ca.lang
index 780dad0..78b8e62 100644
Binary files a/data_nodist/trans/ca.lang and b/data_nodist/trans/ca.lang differ
diff --git a/data_nodist/trans/cs.lang b/data_nodist/trans/cs.lang
index cd19587..a3cbfdc 100644
Binary files a/data_nodist/trans/cs.lang and b/data_nodist/trans/cs.lang differ
diff --git a/data_nodist/trans/da.lang b/data_nodist/trans/da.lang
index dc2b0f2..e449c10 100644
Binary files a/data_nodist/trans/da.lang and b/data_nodist/trans/da.lang differ
diff --git a/data_nodist/trans/de.lang b/data_nodist/trans/de.lang
index e10ead2..fe8e1f3 100644
Binary files a/data_nodist/trans/de.lang and b/data_nodist/trans/de.lang differ
diff --git a/data_nodist/trans/el.lang b/data_nodist/trans/el.lang
index 6541e1b..cda1c85 100644
Binary files a/data_nodist/trans/el.lang and b/data_nodist/trans/el.lang differ
diff --git a/data_nodist/trans/en.lang b/data_nodist/trans/en.lang
index c0f4c84..dfc3f2d 100644
Binary files a/data_nodist/trans/en.lang and b/data_nodist/trans/en.lang differ
diff --git a/data_nodist/trans/en_AU.lang b/data_nodist/trans/en_AU.lang
index 086961d..cc61c12 100644
Binary files a/data_nodist/trans/en_AU.lang and b/data_nodist/trans/en_AU.lang differ
diff --git a/data_nodist/trans/en_GB.lang b/data_nodist/trans/en_GB.lang
index c4437a8..2531f27 100644
Binary files a/data_nodist/trans/en_GB.lang and b/data_nodist/trans/en_GB.lang differ
diff --git a/data_nodist/trans/es.lang b/data_nodist/trans/es.lang
index 1015d65..1a701c3 100644
Binary files a/data_nodist/trans/es.lang and b/data_nodist/trans/es.lang differ
diff --git a/data_nodist/trans/et.lang b/data_nodist/trans/et.lang
index b7ed4a5..12aef75 100644
Binary files a/data_nodist/trans/et.lang and b/data_nodist/trans/et.lang differ
diff --git a/data_nodist/trans/fi.lang b/data_nodist/trans/fi.lang
index b031cf7..4296aac 100644
Binary files a/data_nodist/trans/fi.lang and b/data_nodist/trans/fi.lang differ
diff --git a/data_nodist/trans/fr.lang b/data_nodist/trans/fr.lang
index 65648a8..2a8c6ab 100644
Binary files a/data_nodist/trans/fr.lang and b/data_nodist/trans/fr.lang differ
diff --git a/data_nodist/trans/gl.lang b/data_nodist/trans/gl.lang
index 39bd13d..1c0052b 100644
Binary files a/data_nodist/trans/gl.lang and b/data_nodist/trans/gl.lang differ
diff --git a/data_nodist/trans/hu.lang b/data_nodist/trans/hu.lang
index b061d9b..94569ca 100644
Binary files a/data_nodist/trans/hu.lang and b/data_nodist/trans/hu.lang differ
diff --git a/data_nodist/trans/id.lang b/data_nodist/trans/id.lang
index 46de824..8bc1393 100644
Binary files a/data_nodist/trans/id.lang and b/data_nodist/trans/id.lang differ
diff --git a/data_nodist/trans/it.lang b/data_nodist/trans/it.lang
index e08aac0..2a029c5 100644
Binary files a/data_nodist/trans/it.lang and b/data_nodist/trans/it.lang differ
diff --git a/data_nodist/trans/ja.lang b/data_nodist/trans/ja.lang
index 309315c..5b5d52f 100644
Binary files a/data_nodist/trans/ja.lang and b/data_nodist/trans/ja.lang differ
diff --git a/data_nodist/trans/km.lang b/data_nodist/trans/km.lang
index 7591f17..f44c966 100644
Binary files a/data_nodist/trans/km.lang and b/data_nodist/trans/km.lang differ
diff --git a/data_nodist/trans/lt.lang b/data_nodist/trans/lt.lang
index 0f208b0..5b6b1df 100644
Binary files a/data_nodist/trans/lt.lang and b/data_nodist/trans/lt.lang differ
diff --git a/data_nodist/trans/nb.lang b/data_nodist/trans/nb.lang
index 63ce8e9..5c51edc 100644
Binary files a/data_nodist/trans/nb.lang and b/data_nodist/trans/nb.lang differ
diff --git a/data_nodist/trans/nl.lang b/data_nodist/trans/nl.lang
index d12f18c..f37887c 100644
Binary files a/data_nodist/trans/nl.lang and b/data_nodist/trans/nl.lang differ
diff --git a/data_nodist/trans/pl.lang b/data_nodist/trans/pl.lang
index 9fbe45e..f8e500c 100644
Binary files a/data_nodist/trans/pl.lang and b/data_nodist/trans/pl.lang differ
diff --git a/data_nodist/trans/pt.lang b/data_nodist/trans/pt.lang
index 54d9da8..497cd6f 100644
Binary files a/data_nodist/trans/pt.lang and b/data_nodist/trans/pt.lang differ
diff --git a/data_nodist/trans/pt_BR.lang b/data_nodist/trans/pt_BR.lang
index 34f8b58..23c26dc 100644
Binary files a/data_nodist/trans/pt_BR.lang and b/data_nodist/trans/pt_BR.lang differ
diff --git a/data_nodist/trans/ru.lang b/data_nodist/trans/ru.lang
index 138ec16..76f7fd5 100644
Binary files a/data_nodist/trans/ru.lang and b/data_nodist/trans/ru.lang differ
diff --git a/data_nodist/trans/sk.lang b/data_nodist/trans/sk.lang
index bbb6501..f9356b5 100644
Binary files a/data_nodist/trans/sk.lang and b/data_nodist/trans/sk.lang differ
diff --git a/data_nodist/trans/sv.lang b/data_nodist/trans/sv.lang
index 90c20ef..e8c2e4c 100644
Binary files a/data_nodist/trans/sv.lang and b/data_nodist/trans/sv.lang differ
diff --git a/data_nodist/trans/uk.lang b/data_nodist/trans/uk.lang
index c06236d..8f36183 100644
Binary files a/data_nodist/trans/uk.lang and b/data_nodist/trans/uk.lang differ
diff --git a/data_nodist/trans/vi.lang b/data_nodist/trans/vi.lang
index 61dab5f..ae5239d 100644
Binary files a/data_nodist/trans/vi.lang and b/data_nodist/trans/vi.lang differ
diff --git a/data_nodist/trans/zh_CN.lang b/data_nodist/trans/zh_CN.lang
index a50f594..65dc2cb 100644
Binary files a/data_nodist/trans/zh_CN.lang and b/data_nodist/trans/zh_CN.lang differ
diff --git a/data_nodist/trans/zh_TW.lang b/data_nodist/trans/zh_TW.lang
index d344196..e6d6e59 100644
Binary files a/data_nodist/trans/zh_TW.lang and b/data_nodist/trans/zh_TW.lang differ
diff --git a/i18n/po/af.po b/i18n/po/af.po
index 9ee6cb9..2093af2 100644
--- a/i18n/po/af.po
+++ b/i18n/po/af.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2011-10-13 02:39+0000\n"
 "Last-Translator: Grant Slater <Unknown>\n"
 "Language-Team: Afrikaans <af at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:34+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:34+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: af\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1388,7 +1388,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7918,6 +7918,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9232,6 +9238,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14447,6 +14456,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14455,6 +14472,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14900,6 +14921,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14912,9 +14945,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14927,6 +14966,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15718,10 +15760,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15841,7 +15883,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16168,6 +16210,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16200,7 +16247,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16320,6 +16367,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16488,6 +16540,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24830,6 +24887,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24960,18 +25020,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25570,10 +25669,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25621,9 +25720,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25655,9 +25751,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25763,16 +25856,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25826,6 +25919,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25894,6 +25990,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25915,6 +26017,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25941,6 +26049,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25955,6 +26066,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25997,18 +26111,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26505,6 +26607,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26538,6 +26643,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26625,12 +26735,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26731,9 +26867,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27310,14 +27443,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27348,13 +27473,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27366,7 +27488,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27378,22 +27503,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27402,13 +27634,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27441,10 +27691,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28472,6 +28737,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28723,9 +29015,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29967,9 +30256,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30950,6 +31236,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31079,9 +31371,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/am.po b/i18n/po/am.po
index 477ff85..fabdee1 100644
--- a/i18n/po/am.po
+++ b/i18n/po/am.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2010-03-30 12:09+0000\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: Amharic <am at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:35+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:35+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: am\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1388,7 +1388,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7918,6 +7918,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9232,6 +9238,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14447,6 +14456,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14455,6 +14472,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14900,6 +14921,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14912,9 +14945,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14927,6 +14966,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15718,10 +15760,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15841,7 +15883,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16168,6 +16210,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16200,7 +16247,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16320,6 +16367,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16488,6 +16540,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24830,6 +24887,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24960,18 +25020,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25570,10 +25669,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25621,9 +25720,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25655,9 +25751,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25763,16 +25856,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25826,6 +25919,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25894,6 +25990,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25915,6 +26017,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25941,6 +26049,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25955,6 +26066,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25997,18 +26111,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26505,6 +26607,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26538,6 +26643,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26625,12 +26735,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26731,9 +26867,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27310,14 +27443,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27348,13 +27473,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27366,7 +27488,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27378,22 +27503,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27402,13 +27634,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27441,10 +27691,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28472,6 +28737,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28723,9 +29015,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29967,9 +30256,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30950,6 +31236,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31079,9 +31371,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/ar.po b/i18n/po/ar.po
index e550b15..9a7a55d 100644
--- a/i18n/po/ar.po
+++ b/i18n/po/ar.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2015-10-08 23:09+0000\n"
 "Last-Translator: mourad101ee <mourad101ee at gmail.com>\n"
 "Language-Team: Arabic <ar at li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
 "3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:36+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:35+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: ar\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1406,7 +1406,7 @@ msgstr "أرسم خطوط بين نقاط جهاز نظام تحديد المو
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7957,6 +7957,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9272,6 +9278,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14499,6 +14508,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14507,6 +14524,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14952,6 +14973,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14964,9 +14997,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14979,6 +15018,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15770,10 +15812,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15893,7 +15935,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16220,6 +16262,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16252,7 +16299,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16372,6 +16419,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16540,6 +16592,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24882,6 +24939,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -25012,18 +25072,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25622,10 +25721,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25673,9 +25772,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25707,9 +25803,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25815,16 +25908,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25878,6 +25971,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25946,6 +26042,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25967,6 +26069,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25993,6 +26101,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -26007,6 +26118,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26049,18 +26163,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26557,6 +26659,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26590,6 +26695,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26677,12 +26787,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26783,9 +26919,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27362,14 +27495,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27400,13 +27525,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27418,7 +27540,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27430,22 +27555,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27454,13 +27686,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27493,10 +27743,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28524,6 +28789,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28775,9 +29067,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -30019,9 +30308,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -31002,6 +31288,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31131,9 +31423,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/ast.po b/i18n/po/ast.po
index 3cfc2bd..25997df 100644
--- a/i18n/po/ast.po
+++ b/i18n/po/ast.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2017-02-27 10:21+0000\n"
 "Last-Translator: Dirk Stöcker <launchpad at dstoecker.de>\n"
 "Language-Team: Asturian <ast at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-28 04:34+0000\n"
-"X-Generator: Launchpad (build 18329)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:37+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: ast\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1505,8 +1505,8 @@ msgstr "Dibuxar llinies ente puntos de gps en bruto."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Conmutar la preferencia global ''{0}''."
 
-msgid "Encourage/discourage upload"
-msgstr "Dexar/prohibir carga"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "Despegar víes"
@@ -8584,6 +8584,12 @@ msgstr ""
 "que s''empecipia JOSM.<br>Puede abrir manualmente del menú Archivo o dende "
 "la barra de ferramientes.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -10084,6 +10090,9 @@ msgstr "Versión del API: {0}"
 msgid "Upload is discouraged"
 msgstr "Nun s''encamienta la xubida"
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Convertir a capa GPX"
 
@@ -16016,6 +16025,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "residencial"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "monte baxu (marrotales, carba o maleza)"
@@ -16024,6 +16041,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "associatedStreet (Cai Acomuñada)"
@@ -16469,6 +16490,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -16481,9 +16514,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -16496,6 +16535,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -17290,10 +17332,10 @@ msgstr "Stadt Zürich Übersichtsplan (Strassen, Gebäude, Hausnummer)"
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -17413,7 +17455,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -17748,6 +17790,11 @@ msgstr ""
 "fondu. Optimizáu pa basemap.at."
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -17793,8 +17840,8 @@ msgstr ""
 "Implementa una llínea de comandos y dexa crear los tos comandos. Vea "
 "l''enllaz pa los comandos estándar (arcu, círculu, etc)"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
-msgstr "(Peligru: ¡Esperimental!) Ferramienta pa fusionar (entemecer) datos."
+msgid "Tool for conflating data (matching and merging)."
+msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
 msgstr ""
@@ -17936,6 +17983,11 @@ msgstr "Componente pa importar imaxes georreferenciaes"
 msgid "Import vector graphics (SVG)"
 msgstr "Importa gráficos vectoriales (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -18145,6 +18197,11 @@ msgid "Plugin for reverting changesets"
 msgstr "Componente pa revertir conxuntos de cambeos"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -26576,6 +26633,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr "nome de cai embrivíu"
 
@@ -26709,20 +26769,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr "Nodos que doblen les etiquetes de les víes padre"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
-"nun asitiar wikipedia-idioma, use ''wikipedia''=''idioma:títulu de la "
-"páxina''"
 
-msgid "unknown language prefix in wikipedia tag"
-msgstr "prefixu d''idioma desconocíu na etiqueta wikipedia"
+msgid "wikipedia tag has an unknown language prefix"
+msgstr ""
 
-msgid "deprecated format for wikipedia tag"
-msgstr "Formatu obsoletu pa la etiqueta wikipedia"
+msgid "wikipedia tag format is deprecated"
+msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr "''wikipedia''=''Códigu del idioma:Títulu del artículu''"
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr "Esconder iconos a un nivel baxu d''acercamientu"
 
@@ -27355,10 +27452,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -27406,9 +27503,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -27440,9 +27534,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr "Averar a la imaxe seleicionada"
 
@@ -27548,16 +27639,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -27611,6 +27702,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -27679,6 +27773,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -27700,6 +27800,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -27726,6 +27832,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -27740,6 +27849,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -27782,18 +27894,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr "NanoLog"
 
@@ -28410,6 +28510,9 @@ msgstr "Edificiu:"
 msgid "Tags:"
 msgstr "Etiquetes:"
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "Nome:"
 
@@ -28443,6 +28546,11 @@ msgstr ""
 msgid "Created area"
 msgstr "Área creada"
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr "Non puede detectase un polígonu onde fixo clic."
 
@@ -28533,12 +28641,38 @@ msgstr "combinar nodos"
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -28639,9 +28773,6 @@ msgstr ""
 msgid "on polygon"
 msgstr "en polígonu"
 
-msgid "Add address"
-msgstr "Añedir dirección"
-
 msgid "Helping tool for tag address"
 msgstr "Ferramienta d''ayuda pa establecer dirección"
 
@@ -29288,14 +29419,6 @@ msgstr "Esaniciar l''esquema escoyíu de la llista"
 msgid "Color Schemes"
 msgstr "Esquemes de color"
 
-msgid "Conflate object pair"
-msgstr "Par d''oxetos combinaos"
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] "Añedióse {0} objecto a la capa suxetu"
-msgstr[1] "Added {0} objects to subject layer"
-
 msgid "Conflation"
 msgstr "Combinación"
 
@@ -29326,15 +29449,12 @@ msgstr "Configurar"
 msgid "Configure conflation options"
 msgstr "Configurar les opciones de combinación"
 
-msgid "Delete {0} conflation matches"
-msgstr "Borrar {0} axugamientos de combinación"
-
-msgid "Remove {0} unmatched objects"
-msgstr "Esaniciar {0} oxetos ensin axugamientu"
-
 msgid "Remove selected matches"
 msgstr "Quitar coincidencies escoyíes"
 
+msgid "Remove ({0})"
+msgstr ""
+
 msgid "Conflate"
 msgstr "Combinar"
 
@@ -29344,8 +29464,11 @@ msgstr "Combinar los oxetos escoyíos"
 msgid "Conflation: {0}"
 msgstr "Combinación: {0}"
 
-msgid "Cannot replace geometry."
-msgstr "Nun ye posible remplazar la xeometría."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
+msgstr ""
 
 msgid "Zoom to selected primitive(s)"
 msgstr "Averar a les primitives esbillaes"
@@ -29356,23 +29479,130 @@ msgstr "Escoyer la(s) primitiva(s) escoyía(s)"
 msgid "Select the primitives currently selected in the list"
 msgstr "Escoyer les primitives anguaño escoyíes na llista"
 
-msgid "Match finder settings"
-msgstr "Preferencies del buscador d''axugamientos"
+msgid "Generating matches"
+msgstr ""
 
-msgid "Match finder method"
-msgstr "Métodu del buscador d''axugamientos"
+msgid "Finding matches"
+msgstr ""
 
-msgid "Threshold distance"
-msgstr "Estragal de distancia"
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr "Asuntu"
+
+msgid "Conflate object pair"
+msgstr "Par d''oxetos combinaos"
+
+msgid "Cannot replace geometry."
+msgstr "Nun ye posible remplazar la xeometría."
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] "Añedióse {0} objecto a la capa suxetu"
+msgstr[1] "Added {0} objects to subject layer"
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr "Esaniciar {0} oxetos ensin axugamientu"
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Pesu"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
+msgstr ""
+
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
+msgstr ""
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
+
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
-msgstr "Distancies mayores a esti valor van resultar con un puntaje de cero."
+msgid "Simple Example"
+msgstr ""
 
-msgid "Centroid distance"
-msgstr "Distancia al centroide"
+msgid "Advanced Example"
+msgstr ""
 
-msgid "Hausdorff distance"
-msgstr "Distancia de Hausdorff"
+msgid "<Please select data>"
+msgstr ""
 
 msgid "Configure conflation settings"
 msgstr "Configurar los parámetros de combinación"
@@ -29380,14 +29610,32 @@ msgstr "Configurar los parámetros de combinación"
 msgid "Generate matches"
 msgstr "Xenerar axugamientos"
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
-msgstr "Asuntu"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Reemplazar xeometría"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
+msgstr ""
 
 msgid "Selections must be made for both reference and subject."
 msgstr ""
@@ -29420,11 +29668,26 @@ msgstr "Selección vacida"
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
 msgstr ""
 
-msgid "Invalid reference or subject"
-msgstr "Referencia o suxetu inválidu"
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
+msgstr ""
+
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
+msgstr ""
 
 msgid "Download OSM data continuously"
 msgstr ""
@@ -30523,6 +30786,33 @@ msgstr "Importar gráficos vectoriales"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "Arquivos SVG [complementu ImportVec] (*.svg)"
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -30784,9 +31074,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr "Reemplazar xeometría"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -32129,9 +32416,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -33135,6 +33419,12 @@ msgstr ""
 "Alvertencia: nun se soporta l´elementu final \"{0}\" nel conteníu del "
 "conxuntu de cambeos na posición ({1},{2}). Omitiéndolu."
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr "Plugin de señales de tránsitu"
 
@@ -33264,9 +33554,6 @@ msgstr "Configurar les preferencies de enrutamientu"
 msgid "Speed (Km/h)"
 msgstr "Velocidá (km/h)"
 
-msgid "Weight"
-msgstr "Pesu"
-
 msgid "Enter weight values"
 msgstr "Introduza el pesu de los valores"
 
diff --git a/i18n/po/az.po b/i18n/po/az.po
index f4a0b40..2909b84 100644
--- a/i18n/po/az.po
+++ b/i18n/po/az.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2016-12-17 13:38+0000\n"
 "Last-Translator: iAZISS <iss-sash at mail.ru>\n"
 "Language-Team: Azerbaijani <az at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:37+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:37+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
 msgstr ""
@@ -1387,7 +1387,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7917,6 +7917,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9231,6 +9237,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14446,6 +14455,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14454,6 +14471,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14899,6 +14920,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14911,9 +14944,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14926,6 +14965,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15717,10 +15759,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15840,7 +15882,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16167,6 +16209,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16199,7 +16246,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16319,6 +16366,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16487,6 +16539,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24829,6 +24886,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24959,18 +25019,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25569,10 +25668,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25620,9 +25719,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25654,9 +25750,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25762,16 +25855,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25825,6 +25918,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25893,6 +25989,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25914,6 +26016,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25940,6 +26048,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25954,6 +26065,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25996,18 +26110,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26504,6 +26606,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26537,6 +26642,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26624,12 +26734,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26730,9 +26866,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27309,14 +27442,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27347,13 +27472,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27365,7 +27487,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27377,22 +27502,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27401,13 +27633,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27440,10 +27690,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28471,6 +28736,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28722,9 +29014,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29966,9 +30255,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30949,6 +31235,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31078,9 +31370,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/be.po b/i18n/po/be.po
index 62340d7..2194ae6 100644
--- a/i18n/po/be.po
+++ b/i18n/po/be.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2017-02-19 15:59+0000\n"
 "Last-Translator: Darafei Praliaskouski <komzpa at gmail.com>\n"
 "Language-Team: Belarusian <i18n at mova.org>\n"
@@ -19,8 +19,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:39+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:38+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: be\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1518,8 +1518,8 @@ msgstr "Правесці лініі паміж пунктамі gps"
 msgid "Toggles the global setting ''{0}''."
 msgstr "Змяніць глабальню настройку ''{0}''."
 
-msgid "Encourage/discourage upload"
-msgstr "Дапускаць / не рэкамендаваць перадачу на сервер"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "Расклеіць лініі"
@@ -8654,6 +8654,12 @@ msgstr ""
 "<html>Аўтаматычна адкрываць дыялог «Запампаваць з OSM» пры кожным запуску "
 "JOSM.<br>Яго можна адкрыць уручную з меню «Файл» ці панэлі прылад.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -10191,6 +10197,9 @@ msgstr "Версія API: {0}"
 msgid "Upload is discouraged"
 msgstr "Перадача не рэкамендуецца"
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Пераўтварыць у пласт GPX"
 
@@ -16160,6 +16169,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "жылыя кварталы"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "хмызняк"
@@ -16168,6 +16185,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr "дрэва"
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "Вуліца"
@@ -16614,6 +16635,18 @@ msgstr "VoGIS: вышыні і рэльеф мясцовасці"
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr "Здымкі з imagico.de: горныя масівы Рыла і Пірын"
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr "AGIV Фландрыя - найноўшыя аэрафотаздымкі"
 
@@ -16626,9 +16659,15 @@ msgstr "AGIV Фландрыя GRB"
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr - лічбавая выява (2013)"
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr "URBISnl - лічбавая выява (2013)"
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr "URBIS 2009 - аэрафотаздымка"
 
@@ -16641,6 +16680,9 @@ msgstr "URBIS 2014 - аэрафотаздымка"
 msgid "URBIS 2015 aerial imagery"
 msgstr "URBIS 2015 - аэрафотаздымка"
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr "SPW (allonie) лічбавыя выявы PICC"
 
@@ -17442,12 +17484,11 @@ msgstr "Цюрых: аглядны план горада (вуліцы, буды
 msgid "Stadt Zürich Luftbild 2011"
 msgstr "Горад Цюрых: аэрафотаздымка 2011"
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
-msgstr "Аэрафотаздымка кантона Золатурн RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
+msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
-"Аэрафотаздымка кантона Золатурн у ІЧ-дыяпазоне (SOGIS 2013/2014/2015)"
 
 msgid "Canton de Génève 5cm (SITG 2011)"
 msgstr "Кантон Жэнева 5 см (SITG 2011)"
@@ -17566,8 +17607,8 @@ msgstr "Ортафота Тэхаса"
 msgid "Philadelphia 2015 Imagery"
 msgstr "Філадэльфія - здымкі 2015"
 
-msgid "MD 2014 6 Inch Aerial Imagery"
-msgstr "Мэрыленд: здымкі 6 цаляў, 2014"
+msgid "MD Latest 6 Inch Aerial Imagery"
+msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
 msgstr "Мэрыленд: здымкі 3 цалі"
@@ -17905,6 +17946,11 @@ msgstr ""
 "basemap.at."
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -17949,10 +17995,8 @@ msgstr ""
 "Перайдзіце па спасылцы, каб азнаёміцца са стандартнымі камандамі (arc, "
 "circle і г.д.)"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
-"(Увага: Эксперыментальная версія!) Інструмент для аб’яднання (зліцця) "
-"дадзеных."
 
 msgid "Downloads new data when you pan/zoom"
 msgstr "Падпампоўвае новыя дадзеныя пры панарамаванні або пры змене маштабу"
@@ -18097,6 +18141,11 @@ msgstr "Модуль для імпарту прасторава прывязан
 msgid "Import vector graphics (SVG)"
 msgstr "Імпарт вектарнай графікі (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 "Гэты модуль спрашчае маляванне і рэдагаванне калідораў усярэдзіне будынкаў."
@@ -18315,6 +18364,11 @@ msgid "Plugin for reverting changesets"
 msgstr "Модуль для адкату пакетаў правак"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -26783,6 +26837,9 @@ msgstr ""
 "{0} – тэг для лінейных водных аб''ектаў. Для пазначэння вулічных вадаёмаў "
 "скарыстайце {1} + {2}."
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr "скарочанае пазначэнне вуліцы"
 
@@ -26923,20 +26980,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr "Кропкі з тэгамі як у бацькоўскай лініі"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
-"не пазначана мова Вікіпедыі, выкарыстоўвайце ''wikipedia''=''мова:загаловак "
-"старонкі''"
 
-msgid "unknown language prefix in wikipedia tag"
-msgstr "невядомы прэфікс мовы ў тэгу wikipedia"
+msgid "wikipedia tag has an unknown language prefix"
+msgstr ""
 
-msgid "deprecated format for wikipedia tag"
-msgstr "састарэлы фармат тэга wikipedia"
+msgid "wikipedia tag format is deprecated"
+msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr "''wikipedia''=''мова:загаловак старонкі''"
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr "Хаваць значкі на малым маштабе"
 
@@ -27566,11 +27660,11 @@ msgstr "Усяго здымкаў:"
 msgid "images"
 msgstr "здымкі"
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
-msgstr "Шрыфт дарожнага знака ў ''{0}'' мае няправільны фармат"
+msgid "Mapillary object layer"
+msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
-msgstr "Не атрымалася прачытаць файл шрыфта з ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
+msgstr ""
 
 msgid "Mapillary"
 msgstr "Mapillary"
@@ -27617,9 +27711,6 @@ msgstr "Рэжым злучэння"
 msgid "Join/unjoin pictures"
 msgstr "Злучыць/раз''яднаць выявы"
 
-msgid "Join Mapillary pictures"
-msgstr "Злучыць выявы Mapillary"
-
 msgid "Submit changeset"
 msgstr "Перадаць пакет правак"
 
@@ -27657,9 +27748,6 @@ msgstr "Адаслаць выявы."
 msgid "Walk mode"
 msgstr "Пешаходны рэжым"
 
-msgid "Start walk mode"
-msgstr "Пачаць пешаходны рэжым"
-
 msgid "Zoom to selected image"
 msgstr "Маштабаваць да вылучанага здымка"
 
@@ -27765,18 +27853,18 @@ msgstr "Гісторыя Mapillary"
 msgid "Open Mapillary history dialog"
 msgstr "Адкрыць дыялог гісторыі Mapillary"
 
+msgid "No image selected"
+msgstr "Выява не абрана"
+
+msgid "Press \"{0}\" to download images"
+msgstr ""
+
 msgid "Mapillary picture"
 msgstr "Здымак Mapillary"
 
 msgid "Open Mapillary window"
 msgstr "Адкрыць акно Mapillary"
 
-msgid "Mapillary dialog"
-msgstr "Дыялог Mapillary"
-
-msgid "Open Mapillary main dialog"
-msgstr "Адкрыць галоўнае дыялогавае акно Mapillary"
-
 msgid "Next picture"
 msgstr "Наступны здымак"
 
@@ -27829,6 +27917,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr "Перадпрагляд выявы пры навядзенні на яго значок"
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr "Рэжым спампоўкі"
 
@@ -27897,6 +27988,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -27918,6 +28015,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] "Выдалена {0} выява"
@@ -27948,6 +28051,9 @@ msgstr[2] "Павернута {0} выяў"
 msgid "2 images unjoined"
 msgstr "2 выявы раз''яднаныя"
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr "усё ў бачнай вобласці"
 
@@ -27964,6 +28070,9 @@ msgstr ""
 "Спампаваная вобласць OSM занадта вялікая. Рэжым загрузкі зменены на вобласць "
 "са спампаванымі дадзенымі OSM да наступнага перазапуску пласта."
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr "Сцягванне"
 
@@ -28006,18 +28115,6 @@ msgstr "Не выкананы ўваход у Mapillary"
 msgid "Uploading: {0}"
 msgstr "Адсылаецца: {0}"
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr "Няслушны ідэнтыфікатар малюнка ''{0}''!"
-
-msgid "The image key must not be null here!"
-msgstr "Ідэнтыфікатар малюнка тут не павінен мець значэнне null!"
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr "Няслушны ідэнтыфікатар паслядоўнасці ''{0}''!"
-
-msgid "The sequence key must not be null here!"
-msgstr "Ідэнтыфікатар паслядоўнасці тут не павінен мець значэнне null!"
-
 msgid "NanoLog"
 msgstr "NanoLog"
 
@@ -28620,6 +28717,9 @@ msgstr "Будынак:"
 msgid "Tags:"
 msgstr "Тэгі:"
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "Назва:"
 
@@ -28655,6 +28755,11 @@ msgstr "Спроба распазнаць вобласць у пункце:"
 msgid "Created area"
 msgstr "Створана вобласць"
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr "Не атрымалася выявіць палігон у месцы пстрычкі."
 
@@ -28757,12 +28862,38 @@ msgstr "Аб''ядноўваць пункты"
 msgid "Merge nodes with existing nodes"
 msgstr "Аб’ядноўваць пункты з існуючымі пунктамі"
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr "Адладка"
 
 msgid "Debugging mode will write images for each processing step."
 msgstr "У рэжыме адладкі будуць створаны выявы для кожнага кроку апрацоўкі."
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr "Генералізацыя будынкаў"
 
@@ -28869,9 +29000,6 @@ msgstr "Адрасныя пункты ўсярэдзіне будынкаў не
 msgid "on polygon"
 msgstr "на палігоне"
 
-msgid "Add address"
-msgstr "Дадаць адрас"
-
 msgid "Helping tool for tag address"
 msgstr "Дапаможная прылада для тэга адрасу"
 
@@ -29508,15 +29636,6 @@ msgstr "Выдаліць абраную тэму са спісу."
 msgid "Color Schemes"
 msgstr "Каляровыя схемы"
 
-msgid "Conflate object pair"
-msgstr "Аб''яднаць пару аб''ектаў"
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] "Дададзены {0} аб''ект да мэтавага пласта"
-msgstr[1] "Дададзенf {0} аб''екты да мэтавага пласта"
-msgstr[2] "Дададзена {0} аб''ектаў да мэтавага пласта"
-
 msgid "Conflation"
 msgstr "Аб''яднанне"
 
@@ -29547,15 +29666,12 @@ msgstr "Налада"
 msgid "Configure conflation options"
 msgstr "Наладзіць параметры аб''яднання"
 
-msgid "Delete {0} conflation matches"
-msgstr "Выдаліць {0} пар зліцця"
-
-msgid "Remove {0} unmatched objects"
-msgstr "Выдаліць {0} несупадаючых аб''ектаў"
-
 msgid "Remove selected matches"
 msgstr "Выдаліць абраныя пары"
 
+msgid "Remove ({0})"
+msgstr ""
+
 msgid "Conflate"
 msgstr "Аб’яднаць"
 
@@ -29565,8 +29681,11 @@ msgstr "Аб''яднаць вылучаныя аб''екты"
 msgid "Conflation: {0}"
 msgstr "Зліццё: {0}"
 
-msgid "Cannot replace geometry."
-msgstr "Немагчыма замяніць геаметрыю."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
+msgstr ""
 
 msgid "Zoom to selected primitive(s)"
 msgstr "Наблізіцца да абраных прымітываў"
@@ -29577,23 +29696,131 @@ msgstr "Вылучыць абраныя прымітывы"
 msgid "Select the primitives currently selected in the list"
 msgstr "Вылучыць прымітывы, якія абраны ў спісе"
 
-msgid "Match finder settings"
-msgstr "Налады пошуку супадзенняў"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr "Мэтавы пласт"
+
+msgid "Conflate object pair"
+msgstr "Аб''яднаць пару аб''ектаў"
+
+msgid "Cannot replace geometry."
+msgstr "Немагчыма замяніць геаметрыю."
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] "Дададзены {0} аб''ект да мэтавага пласта"
+msgstr[1] "Дададзенf {0} аб''екты да мэтавага пласта"
+msgstr[2] "Дададзена {0} аб''ектаў да мэтавага пласта"
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr "Выдаліць {0} несупадаючых аб''ектаў"
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Вага"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
+msgstr ""
+
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
+msgstr ""
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
 
-msgid "Match finder method"
-msgstr "Метад пошуку супадзенняў"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
 
-msgid "Threshold distance"
-msgstr "Парогавая дыстанцыя"
+msgid "Matching"
+msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
-msgstr "Адлегласць больш за пазначаную лічыцца за нуль"
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
 
-msgid "Centroid distance"
-msgstr "Адлегласць паміж геаметрычнымі цэнтрамі"
+msgid "Advanced Example"
+msgstr ""
 
-msgid "Hausdorff distance"
-msgstr "Метрыка Хаусдорфа"
+msgid "<Please select data>"
+msgstr ""
 
 msgid "Configure conflation settings"
 msgstr "Налада параметраў зліцця"
@@ -29601,14 +29828,32 @@ msgstr "Налада параметраў зліцця"
 msgid "Generate matches"
 msgstr "Падабраць пары"
 
-msgid "Layer:"
-msgstr "Пласт:"
+msgid "Reference:"
+msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
-msgstr "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
+msgstr ""
 
-msgid "Subject"
-msgstr "Мэтавы пласт"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Замяніць геаметрыю"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
+msgstr ""
 
 msgid "Selections must be made for both reference and subject."
 msgstr "Вылучэнне павінна быць зроблена і на даведкавым і на мэтавым пласце"
@@ -29640,11 +29885,26 @@ msgstr "Нічога не вылучана"
 msgid "Freeze reference selection"
 msgstr "Заблакаваць вылучэнне ў даведкавым пласце"
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
-msgstr "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
+msgstr ""
 
-msgid "Invalid reference or subject"
-msgstr "Няслушны аб''ект даведкавага або мэтавага пласта"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
+msgstr ""
 
 msgid "Download OSM data continuously"
 msgstr "Бесперапынна загружаць дадзеныя з OSM"
@@ -30745,6 +31005,33 @@ msgstr "Імпарт вектарнай графікі"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "SVG файлы [модуль ImportVec] (*.svg)"
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr "Памагаты стварэння вестыбюляў..."
 
@@ -31009,9 +31296,6 @@ msgstr "Замяніць лінію"
 msgid "Replace way of selected way with a new way"
 msgstr "Замяніць абраную лінію новай лініяй"
 
-msgid "Replace Geometry"
-msgstr "Замяніць геаметрыю"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -32342,9 +32626,6 @@ msgstr "Рэдагаваць GPS-дадзеныя здымка"
 msgid "Please select an image first."
 msgstr "Спачатку абярыце выяву."
 
-msgid "No image selected"
-msgstr "Выява не абрана"
-
 msgid "(Empty values delete the according fields.)"
 msgstr "(Пустыя значэнні выдаляюць адпаведныя палі.)"
 
@@ -33358,6 +33639,12 @@ msgstr ""
 "Папярэджанне: Непадтрымоўваны канчатковы элемент ''{0}'' у змесціве пакета "
 "правак у пазіцыі ({1},{2}). Прапушчана."
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr "Модуль Дарожныя знакі"
 
@@ -33487,9 +33774,6 @@ msgstr "Задаць налады маршрутызацыі."
 msgid "Speed (Km/h)"
 msgstr "Хуткасць (км/г)"
 
-msgid "Weight"
-msgstr "Вага"
-
 msgid "Enter weight values"
 msgstr "Увядзіце значэнні вагі"
 
diff --git a/i18n/po/bg.po b/i18n/po/bg.po
index da06b0c..6a8552a 100644
--- a/i18n/po/bg.po
+++ b/i18n/po/bg.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2016-08-05 14:02+0000\n"
 "Last-Translator: pl <Unknown>\n"
 "Language-Team: Bulgarian <bg at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:41+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:41+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: bg\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1458,7 +1458,7 @@ msgstr "Съединявай с линии точките от GPS следит
 msgid "Toggles the global setting ''{0}''."
 msgstr "Вкл./изкл. глобалната настройка ''{0}''."
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -8077,6 +8077,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9422,6 +9428,9 @@ msgstr "API версия: {0}"
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Преобразувай в слой GPX"
 
@@ -14726,6 +14735,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "жилищна зона"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14734,6 +14751,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -15179,6 +15200,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -15191,9 +15224,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -15206,6 +15245,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15999,10 +16041,10 @@ msgstr "Stadt Zürich Übersichtsplan (Strassen, Gebäude, Hausnummer)"
 msgid "Stadt Zürich Luftbild 2011"
 msgstr "Stadt Zürich Luftbild 2011"
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -16122,7 +16164,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16449,6 +16491,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16481,7 +16528,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16606,6 +16653,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16784,6 +16836,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -25128,6 +25185,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr "съкратено име на улица"
 
@@ -25258,18 +25318,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25870,10 +25969,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25921,9 +26020,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25955,9 +26051,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -26063,16 +26156,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -26126,6 +26219,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -26194,6 +26290,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -26215,6 +26317,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -26241,6 +26349,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -26255,6 +26366,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26297,18 +26411,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26805,6 +26907,9 @@ msgstr "Сграда:"
 msgid "Tags:"
 msgstr "Тагове:"
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "Име:"
 
@@ -26838,6 +26943,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26925,12 +27035,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -27031,9 +27167,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr "Добавяне на адрес"
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27631,14 +27764,6 @@ msgstr "Изтриване на избраната схема от списък
 msgid "Color Schemes"
 msgstr "Цветни схеми"
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27669,13 +27794,10 @@ msgstr "Настройки"
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27687,7 +27809,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27699,22 +27824,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Тегло"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27723,13 +27955,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27762,10 +28012,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28798,6 +29063,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -29049,9 +29341,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -30315,9 +30604,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -31298,6 +31584,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31427,9 +31719,6 @@ msgstr "Настройване предпочитания за маршрути
 msgid "Speed (Km/h)"
 msgstr "Скорост (км/ч)"
 
-msgid "Weight"
-msgstr "Тегло"
-
 msgid "Enter weight values"
 msgstr "Въведете стойности за тегло"
 
diff --git a/i18n/po/bn.po b/i18n/po/bn.po
index 7e02280..b7586d3 100644
--- a/i18n/po/bn.po
+++ b/i18n/po/bn.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2015-04-03 09:24+0000\n"
 "Last-Translator: Md Alamgir <alamgircu at hotmail.com>\n"
 "Language-Team: Bengali <bn at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:39+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:39+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: bn\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1391,7 +1391,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7921,6 +7921,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9235,6 +9241,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14450,6 +14459,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14458,6 +14475,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14903,6 +14924,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14915,9 +14948,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14930,6 +14969,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15721,10 +15763,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15844,7 +15886,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16171,6 +16213,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16203,7 +16250,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16323,6 +16370,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16491,6 +16543,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24833,6 +24890,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24963,18 +25023,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25573,10 +25672,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25624,9 +25723,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25658,9 +25754,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25766,16 +25859,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25829,6 +25922,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25897,6 +25993,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25918,6 +26020,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25944,6 +26052,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25958,6 +26069,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26000,18 +26114,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26508,6 +26610,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26541,6 +26646,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26628,12 +26738,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26734,9 +26870,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27313,14 +27446,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27351,13 +27476,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27369,7 +27491,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27381,22 +27506,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27405,13 +27637,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27444,10 +27694,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28475,6 +28740,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28726,9 +29018,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29970,9 +30259,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30953,6 +31239,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31082,9 +31374,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/br.po b/i18n/po/br.po
index b5c4733..b7b257d 100644
--- a/i18n/po/br.po
+++ b/i18n/po/br.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2011-10-17 12:11+0000\n"
 "Last-Translator: Fulup <Unknown>\n"
 "Language-Team: Breton <br at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:41+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:40+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: br\n"
 
 msgid "License"
@@ -1388,7 +1388,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7918,6 +7918,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9232,6 +9238,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14447,6 +14456,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14455,6 +14472,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14900,6 +14921,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14912,9 +14945,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14927,6 +14966,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15718,10 +15760,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15841,7 +15883,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16168,6 +16210,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16200,7 +16247,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16320,6 +16367,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16488,6 +16540,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24830,6 +24887,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24960,18 +25020,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25570,10 +25669,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25621,9 +25720,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25655,9 +25751,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25763,16 +25856,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25826,6 +25919,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25894,6 +25990,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25915,6 +26017,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25941,6 +26049,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25955,6 +26066,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25997,18 +26111,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26505,6 +26607,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26538,6 +26643,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26625,12 +26735,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26731,9 +26867,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27310,14 +27443,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27348,13 +27473,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27366,7 +27488,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27378,22 +27503,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27402,13 +27634,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27441,10 +27691,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28472,6 +28737,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28723,9 +29015,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29967,9 +30256,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30950,6 +31236,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31079,9 +31371,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/bs.po b/i18n/po/bs.po
index d75d755..9e536ba 100644
--- a/i18n/po/bs.po
+++ b/i18n/po/bs.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2012-11-03 23:07+0000\n"
 "Last-Translator: Alen Mahovic <eyeofthestorm at windowslive.com>\n"
 "Language-Team: Bosnian <bs at li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:40+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:40+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: bs\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1391,7 +1391,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7921,6 +7921,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9235,6 +9241,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14450,6 +14459,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14458,6 +14475,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14903,6 +14924,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14915,9 +14948,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14930,6 +14969,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15721,10 +15763,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15844,7 +15886,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16171,6 +16213,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16203,7 +16250,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16323,6 +16370,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16491,6 +16543,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24833,6 +24890,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24963,18 +25023,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25573,10 +25672,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25624,9 +25723,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25658,9 +25754,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25766,16 +25859,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25829,6 +25922,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25897,6 +25993,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25918,6 +26020,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25944,6 +26052,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25958,6 +26069,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26000,18 +26114,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26508,6 +26610,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26541,6 +26646,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26628,12 +26738,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26734,9 +26870,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27313,14 +27446,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27351,13 +27476,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27369,7 +27491,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27381,22 +27506,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27405,13 +27637,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27444,10 +27694,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28475,6 +28740,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28726,9 +29018,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29970,9 +30259,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30953,6 +31239,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31082,9 +31374,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/ca.po b/i18n/po/ca.po
index 6035d1d..e8b61ca 100644
--- a/i18n/po/ca.po
+++ b/i18n/po/ca.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
-"PO-Revision-Date: 2016-11-15 23:48+0000\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
+"PO-Revision-Date: 2017-03-14 22:52+0000\n"
 "Last-Translator: Don-vip <Unknown>\n"
 "Language-Team: el_libre - - www.catmidia.cat\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:42+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:41+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: ca\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1513,8 +1513,8 @@ msgstr "Dibuixa les línies entre els punts GPS."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Canvia la configuració global ''{0}''."
 
-msgid "Encourage/discourage upload"
-msgstr "Aconsellar/desaconsellar la pujada"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "Separa les vies"
@@ -8652,6 +8652,12 @@ msgstr ""
 "s''inicia.<br>El podeu obrir manualment utilitzant el menú Fitxer o la barra "
 "d''eines.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -10148,6 +10154,9 @@ msgstr "Versió de l''API: {0}"
 msgid "Upload is discouraged"
 msgstr "Es desaconsella la pujada"
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Convertir a una capa GPX"
 
@@ -10946,7 +10955,7 @@ msgid "Advanced OAuth properties"
 msgstr "Propietats avançades d''OAuth"
 
 msgid "Accept Access Token"
-msgstr "Accetar el testimoni d''autenticació"
+msgstr "Acceptar el testimoni d''autenticació"
 
 msgid ""
 "<html>You have successfully retrieved an OAuth Access Token from the OSM "
@@ -16128,6 +16137,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "residencial"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "matolls"
@@ -16136,6 +16153,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr "bosc"
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "carrer associat"
@@ -16582,6 +16603,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -16594,9 +16627,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr imatgeria digital (2013)"
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr "URBISnl imatgeria digital (2013)"
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr "Imatgeria aèria URBIS 2009"
 
@@ -16609,6 +16648,9 @@ msgstr "URBIS 2014 imatgeria aèria"
 msgid "URBIS 2015 aerial imagery"
 msgstr "URBIS 2015 imatgeria aèria"
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr "SPW (Valònia) PICC imatgeria digital"
 
@@ -17403,10 +17445,10 @@ msgstr "Stadt Zürich Übersichtsplan (Strassen, Gebäude, Hausnummer)"
 msgid "Stadt Zürich Luftbild 2011"
 msgstr "Ciutat de Zuric Imatgeria aèria 2011"
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -17526,7 +17568,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -17865,6 +17907,11 @@ msgstr ""
 "Optimitzat per basemap."
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -17909,8 +17956,8 @@ msgstr ""
 "ordres. Utilitzeu l''enllaç per veure les ordres estàndard (arc, cercle, "
 "etc.)"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
-msgstr "(Avís: Experimental!) Eina per combinar (fusionar) dades."
+msgid "Tool for conflating data (matching and merging)."
+msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
 msgstr "Baixa noves dades quan amplies o et mous"
@@ -18055,6 +18102,11 @@ msgstr "Connector per importar imatges georeferenciades"
 msgid "Import vector graphics (SVG)"
 msgstr "Importa gràfics vectorials (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -18271,6 +18323,11 @@ msgid "Plugin for reverting changesets"
 msgstr "Connector per desfer conjunts de canvis"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -26729,6 +26786,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr "nom abreviat del carrer"
 
@@ -26867,20 +26927,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr "Nodes que dupliquen els atributs de la via pare"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
-"manca l''indicatiu de llengua de la viqupèdia, utilitzeu "
-"''wikipedia''=''llengua:article'' (p.ex: ''wikipedia''=''ca:Montseny''"
 
-msgid "unknown language prefix in wikipedia tag"
-msgstr "prefix de llengua desconegut a l''etiqueta viquipèdia"
+msgid "wikipedia tag has an unknown language prefix"
+msgstr ""
 
-msgid "deprecated format for wikipedia tag"
-msgstr "format obsolet per l''etiqueta de la viquipèdia"
+msgid "wikipedia tag format is deprecated"
+msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr "''wikipedia''=''llengua:títol de la pàgina''"
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr "Oculta les icones quan l''ampliació és petita"
 
@@ -27512,10 +27609,10 @@ msgstr "Imatges totals:"
 msgid "images"
 msgstr "imatges"
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -27563,9 +27660,6 @@ msgstr "Afegeix mode"
 msgid "Join/unjoin pictures"
 msgstr "Afegeix/treu fotografies"
 
-msgid "Join Mapillary pictures"
-msgstr "Afegeix fotografies de Mapillary"
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -27597,9 +27691,6 @@ msgstr "Puja fotografies."
 msgid "Walk mode"
 msgstr "Mode caminant"
 
-msgid "Start walk mode"
-msgstr "Inicial el \"mode caminant\""
-
 msgid "Zoom to selected image"
 msgstr "Amplia la imatge seleccionada"
 
@@ -27705,18 +27796,18 @@ msgstr "Historial de Mapillary"
 msgid "Open Mapillary history dialog"
 msgstr "Obre el diàleg de l''historial de Mapillary"
 
+msgid "No image selected"
+msgstr "No heu seleccionat cap imatge"
+
+msgid "Press \"{0}\" to download images"
+msgstr ""
+
 msgid "Mapillary picture"
 msgstr "Fotografia de Mapillary"
 
 msgid "Open Mapillary window"
 msgstr "Obre una finestra de Mapillary"
 
-msgid "Mapillary dialog"
-msgstr "Diàleg de  Mapillary"
-
-msgid "Open Mapillary main dialog"
-msgstr "Obre el diàleg prinicipal de  Mapillary"
-
 msgid "Next picture"
 msgstr "Imatge següent"
 
@@ -27768,6 +27859,9 @@ msgstr "Mou a la ubicació de les fotografies amb els botons següent/previ"
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr "Mode de descàrrega"
 
@@ -27838,6 +27932,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -27859,6 +27959,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] "Suprimida {0} imatge"
@@ -27885,6 +27991,9 @@ msgstr[1] "{0} imatges girades"
 msgid "2 images unjoined"
 msgstr "2 imatges tretes"
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -27899,6 +28008,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr "Descarregant"
 
@@ -27941,18 +28053,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr "Pujant: {0}"
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr "La clau d''imatge ''{0}'' no és vàlida!"
-
-msgid "The image key must not be null here!"
-msgstr "La clau d''imatge no por ser un nul aquí!"
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr "La clau se seqüència ''{0}'' no és vàlida!"
-
-msgid "The sequence key must not be null here!"
-msgstr "La clau de seqüència no por ser un nul aquí!"
-
 msgid "NanoLog"
 msgstr "NanoLog"
 
@@ -28562,6 +28662,9 @@ msgstr "Edifici:"
 msgid "Tags:"
 msgstr "Etiquetes:"
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "Nom:"
 
@@ -28595,6 +28698,11 @@ msgstr ""
 msgid "Created area"
 msgstr "Àrea creada"
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr "No és possible la detecció de cap polígon on heu fet clic."
 
@@ -28697,6 +28805,14 @@ msgstr "combina nodes"
 msgid "Merge nodes with existing nodes"
 msgstr "Combina els nodes amb nodes existents"
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr "Depura"
 
@@ -28704,6 +28820,24 @@ msgid "Debugging mode will write images for each processing step."
 msgstr ""
 "El mode de depuració d''errors escriurà imatges per a cada etapa del procés."
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -28804,9 +28938,6 @@ msgstr "No s''ha trobat cap node d''adreça dins de les edificacions"
 msgid "on polygon"
 msgstr "al polígon"
 
-msgid "Add address"
-msgstr "Afegeix una adreça"
-
 msgid "Helping tool for tag address"
 msgstr "Eina d''ajuda per afegir adreces"
 
@@ -29457,14 +29588,6 @@ msgstr "Suprimir l''esquema seleccionat de la llista."
 msgid "Color Schemes"
 msgstr "Esquemes de color"
 
-msgid "Conflate object pair"
-msgstr "Combina el parell d''objectes"
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] "Afegit {0} objecte a la capa del subjecte"
-msgstr[1] "Afegits {0} objectes a la capa del subjecte"
-
 msgid "Conflation"
 msgstr "Combinació"
 
@@ -29495,15 +29618,12 @@ msgstr "Configura"
 msgid "Configure conflation options"
 msgstr "Configura les opcions de combinació"
 
-msgid "Delete {0} conflation matches"
-msgstr "Suprimeix {0} coincidències de combinació"
-
-msgid "Remove {0} unmatched objects"
-msgstr "Suprimeix {0} objectes no coincidents"
-
 msgid "Remove selected matches"
 msgstr "Suprimeix les coincidències seleccionades"
 
+msgid "Remove ({0})"
+msgstr ""
+
 msgid "Conflate"
 msgstr "Combina"
 
@@ -29513,8 +29633,11 @@ msgstr "Combina els objectes seleccionats"
 msgid "Conflation: {0}"
 msgstr "Combinació: {0}"
 
-msgid "Cannot replace geometry."
-msgstr "No és possible de reemplaçar la geometria."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
+msgstr ""
 
 msgid "Zoom to selected primitive(s)"
 msgstr "Amplia la zona de les primitives seleccionades."
@@ -29525,23 +29648,130 @@ msgstr "Selecciona les primitives seleccionades."
 msgid "Select the primitives currently selected in the list"
 msgstr "Selecciona les primitives que són selecionades a la llista"
 
-msgid "Match finder settings"
-msgstr "Configuració del cercador coincident"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
 
-msgid "Match finder method"
-msgstr "Mètode del cercador coincident"
+msgid "Sorting scores"
+msgstr ""
 
-msgid "Threshold distance"
-msgstr "Llindar de distància"
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr "Subjecte"
+
+msgid "Conflate object pair"
+msgstr "Combina el parell d''objectes"
+
+msgid "Cannot replace geometry."
+msgstr "No és possible de reemplaçar la geometria."
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] "Afegit {0} objecte a la capa del subjecte"
+msgstr[1] "Afegits {0} objectes a la capa del subjecte"
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr "Suprimeix {0} objectes no coincidents"
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Pes"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
+msgstr ""
+
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
+msgstr ""
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
-msgstr "Distàncies més grans que aquesta donaran un resultat de zero."
+msgid "Matching"
+msgstr ""
 
-msgid "Centroid distance"
-msgstr "Distància al centroide"
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
 
-msgid "Hausdorff distance"
-msgstr "Distància de Hausdorff"
+msgid "<Please select data>"
+msgstr ""
 
 msgid "Configure conflation settings"
 msgstr "Configura els paràmetres de configuració"
@@ -29549,14 +29779,32 @@ msgstr "Configura els paràmetres de configuració"
 msgid "Generate matches"
 msgstr "Genera conincidències"
 
-msgid "Layer:"
-msgstr "Capa:"
+msgid "Reference:"
+msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
-msgstr "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
+msgstr ""
 
-msgid "Subject"
-msgstr "Subjecte"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Reemplaçar geometria"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
+msgstr ""
 
 msgid "Selections must be made for both reference and subject."
 msgstr "La selecció ha de ser feta tant per la referència com pel subjecte"
@@ -29588,11 +29836,26 @@ msgstr "Selecció buida"
 msgid "Freeze reference selection"
 msgstr "Boqueja la selecció de referència"
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
-msgstr "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
 
-msgid "Invalid reference or subject"
-msgstr "Referència o objecte no vàlid."
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
+msgstr ""
+
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
+msgstr ""
 
 msgid "Download OSM data continuously"
 msgstr "Descàrrega continuada de dades OSM"
@@ -30710,6 +30973,33 @@ msgstr "Importa gràfics vectorials"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "Fitxers SVG [Connector ImportVec] (*.svg)"
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -30972,9 +31262,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr "Reemplaçar geometria"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -32338,9 +32625,6 @@ msgstr "Modifica dades GPS de la fotografia"
 msgid "Please select an image first."
 msgstr "Si us plau, seleccioneu primer una fotografia"
 
-msgid "No image selected"
-msgstr "No heu seleccionat cap imatge"
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -33349,6 +33633,12 @@ msgstr ""
 "Avís: l''element de final ''{0}'' situat a la posició ({1},{2}) dins del "
 "conjunt de canvis no està suportat. Anul·lant."
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr "Connector de senyals de trànsit"
 
@@ -33478,9 +33768,6 @@ msgstr "Configurar les preferències de càlcul d''itineraris"
 msgid "Speed (Km/h)"
 msgstr "Velocitat (km/h)"
 
-msgid "Weight"
-msgstr "Pes"
-
 msgid "Enter weight values"
 msgstr "Introduïu els valors de pes"
 
@@ -34276,7 +34563,7 @@ msgstr ""
 "Els voleu baixar del servidor OSM?"
 
 msgid "Load objects from server"
-msgstr "Baixar objectes del servidor"
+msgstr "Carrega objectes des del servidor"
 
 msgid "Download signed data"
 msgstr "Baixar dades signades"
@@ -35914,7 +36201,7 @@ msgid "Way Download"
 msgstr "Baixar una via"
 
 msgid "Download map data on the end of selected way"
-msgstr "Baixar dades carogràfiques al final de la via seleccionada"
+msgstr "Baixa les dades cartogràfiques al final de la via seleccionada"
 
 msgid ""
 "<html>Neither a node nor a way with an endpoint outside of the<br>current "
@@ -35938,8 +36225,8 @@ msgid ""
 "Way downloader data inconsistency. Prior connected way ''{0}'' wasn''t "
 "discovered after download"
 msgstr ""
-"Les dades baixades no són coherents. La via connectada ''{0}'' no fou "
-"trobada desrpés de la baixada."
+"Les vies baixades no són coherents. La via connectada ''{0}'' no s''ha "
+"trobat després de la baixada."
 
 msgid ""
 "<html>There aren''t further connected ways to download.<br>A potential "
diff --git a/i18n/po/ca at valencia.po b/i18n/po/ca at valencia.po
index a5496ea..04f579b 100644
--- a/i18n/po/ca at valencia.po
+++ b/i18n/po/ca at valencia.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2015-04-25 18:52+0000\n"
 "Last-Translator: Dirk Stöcker <launchpad at dstoecker.de>\n"
 "Language-Team: el_libre - - www.catmidia.cat\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:27+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:22+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: ca at valencia\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1500,8 +1500,8 @@ msgstr "Dibuixa les línies entre els punts GPS."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Canvia la configuració global ''{0}''."
 
-msgid "Encourage/discourage upload"
-msgstr "Aconsella/desaconsella la pujada"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "Separa les vies"
@@ -8485,6 +8485,12 @@ msgstr ""
 "s''inicia.<br>El podeu obrir manualment utilitzant el menú Fitxer o la barra "
 "d''eines.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9982,6 +9988,9 @@ msgstr "Versió de l''API: {0}"
 msgid "Upload is discouraged"
 msgstr "Es desaconsella la càrrega"
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Convertir a una capa GPX"
 
@@ -15918,6 +15927,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "residencial"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "matolls"
@@ -15926,6 +15943,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "carrer associat"
@@ -16372,6 +16393,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -16384,9 +16417,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -16399,6 +16438,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -17190,10 +17232,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -17313,7 +17355,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -17645,6 +17687,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -17688,7 +17735,7 @@ msgstr ""
 "Implementa una línia d''ordes i habilita la creació de les vostres pròpies "
 "ordes. Utilitzeu l''enllaç per veure les ordes estàndard (arc, cercle, etc.)"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -17826,6 +17873,11 @@ msgstr "Connector per importar imatges georeferenciades"
 msgid "Import vector graphics (SVG)"
 msgstr "Importa gràfics vectorials (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -18029,6 +18081,11 @@ msgid "Plugin for reverting changesets"
 msgstr "Connector per desfer conjunts de canvis"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -26413,6 +26470,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr "nom abreviat del carrer"
 
@@ -26543,20 +26603,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr "Nodes que dupliquen els atributs de la via pare"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
-"manca l''indicatiu de llengua de la viqupèdia, utilitzeu "
-"''wikipedia''=''llengua:article'' (p.ex: ''wikipedia''=''ca:Montseny''"
 
-msgid "unknown language prefix in wikipedia tag"
-msgstr "prefix de llengua desconegut a l''etiqueta viquipèdia"
+msgid "wikipedia tag has an unknown language prefix"
+msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -27182,10 +27279,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -27233,9 +27330,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -27267,9 +27361,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -27375,16 +27466,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -27438,6 +27529,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -27506,6 +27600,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -27527,6 +27627,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -27553,6 +27659,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -27567,6 +27676,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -27609,18 +27721,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr "NanoLog"
 
@@ -28230,6 +28330,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "Nom:"
 
@@ -28263,6 +28366,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -28350,12 +28458,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -28456,9 +28590,6 @@ msgstr ""
 msgid "on polygon"
 msgstr "al polígon"
 
-msgid "Add address"
-msgstr "Afig una adreça"
-
 msgid "Helping tool for tag address"
 msgstr "Eina d''ajuda per afegir adreces"
 
@@ -29109,14 +29240,6 @@ msgstr "Suprimir l''esquema seleccionat de la llista."
 msgid "Color Schemes"
 msgstr "Esquemes de color"
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -29147,13 +29270,10 @@ msgstr "Configura"
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -29165,7 +29285,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -29177,22 +29300,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Pes"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
 msgstr ""
 
-msgid "Match finder method"
+msgid "Symmetric Difference (Centroids Aligned)"
 msgstr ""
 
-msgid "Threshold distance"
+msgid "Compactness"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid "Angle Histogram. Bins: "
 msgstr ""
 
-msgid "Centroid distance"
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
+msgstr ""
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
+
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -29201,13 +29431,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Reemplaçar geometria"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -29240,10 +29488,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -30345,6 +30608,33 @@ msgstr "Importa gràfics vectorials"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "Fitxers SVG [Connector ImportVec] (*.svg)"
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -30607,9 +30897,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr "Reemplaçar geometria"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -31973,9 +32260,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -32979,6 +33263,12 @@ msgstr ""
 "Avís: l''element de final ''{0}'' situat a la posició ({1},{2}) dins del "
 "conjunt de canvis no està suportat. Anul·lant."
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr "Connector de senyals de trànsit"
 
@@ -33108,9 +33398,6 @@ msgstr "Configurar les preferències de càlcul d''itineraris"
 msgid "Speed (Km/h)"
 msgstr "Velocitat (km/h)"
 
-msgid "Weight"
-msgstr "Pes"
-
 msgid "Enter weight values"
 msgstr "Introduïu els valors de pes"
 
diff --git a/i18n/po/cs.po b/i18n/po/cs.po
index 83f817e..2e1502c 100644
--- a/i18n/po/cs.po
+++ b/i18n/po/cs.po
@@ -8,16 +8,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
-"PO-Revision-Date: 2017-02-16 06:25+0000\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
+"PO-Revision-Date: 2017-03-24 03:22+0000\n"
 "Last-Translator: Dalibor Jelínek <launchpad.net at dalibor.cz>\n"
 "Language-Team: Czech <kde-i18n-doc at kde.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:43+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:42+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: cs\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -225,7 +225,7 @@ msgid "Add layers"
 msgstr "Přidat vrstvy"
 
 msgid "Add imagery layer {0}"
-msgstr "Přidat vrstvu podkladových map {0}"
+msgstr "Přidat vrstvu mapového podkladu {0}"
 
 msgid "Invalid service URL."
 msgstr "Neplatné URL služby."
@@ -582,10 +582,10 @@ msgid "New offset"
 msgstr "Nastavení posunutí"
 
 msgid "Adjust the position of this imagery layer"
-msgstr "Nastavit pozici této vrstvy podkladových map"
+msgstr "Nastavit pozici této vrstvy mapového podkladu"
 
 msgid "Adjust imagery offset"
-msgstr "Nastavit posunutí vrstvy podkladových map"
+msgstr "Nastavit posunutí vrstvy mapového podkladu"
 
 msgid ""
 "Use arrow keys or drag the imagery layer with mouse to adjust the imagery "
@@ -802,7 +802,7 @@ msgid "Download Rectified Images From Various Services"
 msgstr "Stáhnout zaměřené obrázky z různých služeb"
 
 msgid "Imagery: {0}"
-msgstr "Pozadí: {0}"
+msgstr "Mapový podklad: {0}"
 
 msgid "Custom WMS Link"
 msgstr "Vlastní WMS Link"
@@ -898,7 +898,8 @@ msgid "Merge the currently selected objects into another layer"
 msgstr "Spojit vybrané objekty do jiné vrstvy."
 
 msgid "Merging too many objects with different upload policies"
-msgstr "Sloučení mnoha objektů s rozličnými metodami uploadu"
+msgstr ""
+"Slučování příliš mnoha objektů s různými strategiemi nahrávání na server"
 
 msgid ""
 "You are about to merge more than 1 object between layers ''{0}'' and "
@@ -1461,7 +1462,7 @@ msgid "Segment {0}: {1}"
 msgstr "Část {0}: {1}"
 
 msgid "You must select two or more nodes to split a circular way."
-msgstr "Musíte zvolit dva nebo více uzlů pro rozdělení kruhové cesty."
+msgstr "Pro rozdělení kruhové cesty musíte zvolit dva nebo více uzlů."
 
 msgid ""
 "The way cannot be split at the selected nodes. (Hint: Select nodes in the "
@@ -1499,8 +1500,8 @@ msgstr "Vykreslovat spojnice mezi GPS uzly"
 msgid "Toggles the global setting ''{0}''."
 msgstr "Zapnout/vypnout globální nastavení ''{0}''."
 
-msgid "Encourage/discourage upload"
-msgstr "Doporučuj/nedoporučuj upload"
+msgid "Discourage upload"
+msgstr "Odradit od nahrávání na server"
 
 msgid "UnGlue Ways"
 msgstr "Rozpojit cesty"
@@ -1512,10 +1513,10 @@ msgid "This node is not glued to anything else."
 msgstr "Tento uzel není přilepen k ničemu jinému."
 
 msgid "None of these nodes are glued to anything else."
-msgstr "Žádný z těchto uzlů není připojen na něco jiného."
+msgstr "Žádný z těchto uzlů není připojen k něčemu jinému."
 
 msgid "None of this way''s nodes are glued to anything else."
-msgstr "Žádný z uzlů v této cestě není připojen na něco jiného."
+msgstr "Žádný z uzlů této cesty není připojen k něčemu jinému."
 
 msgid "The current selection cannot be used for unglueing."
 msgstr "Tento výběr nelze použít pro rozpojení uzlů"
@@ -1751,7 +1752,7 @@ msgid "Upload all changes in the current selection to the OSM server."
 msgstr "Nahrát veškeré aktuálně vybrané změny na OSM server."
 
 msgid "Checking parents for deleted objects"
-msgstr "Kontroluji rodiče smazaných objektů"
+msgstr "Kontroluji rodičovské objekty, zda nejsou smazané"
 
 msgid "Reading parents of ''{0}''"
 msgstr "Načítání rodičů ''{0}''"
@@ -1954,7 +1955,7 @@ msgid "Download OSM Notes within Bounds"
 msgstr "Stáhnout poznámky k OSM uvnitř hranic"
 
 msgid "Download OSM Note by ID"
-msgstr "Stáhnout poznámku OSM podle ID"
+msgstr "Stáhnout poznámku OSM podle identifikátoru"
 
 msgid "Download Compressed OSM Change"
 msgstr "Stáhnout komprimovanou změnu OSM"
@@ -2124,10 +2125,10 @@ msgstr ""
 "když vymažete cestu. Ctrl: smaže odkazované objekty."
 
 msgid "draw angle snap"
-msgstr "Kreslit přichytávání úhlů"
+msgstr "Přichytávání úhlů při kreslení"
 
 msgid "draw angle snap highlight"
-msgstr "Zvýraznění přichytávání úhlů"
+msgstr "Zvýraznění přichytávání úhlů při kreslení"
 
 msgid "helper line"
 msgstr "pomocná čára"
@@ -2139,10 +2140,10 @@ msgid "Draw nodes"
 msgstr "Kreslit uzly"
 
 msgid "Mode: Draw Angle snapping"
-msgstr "Režim: kreslení přichytávání úhlů"
+msgstr "Režim: přichytávání úhlů při kreslení"
 
 msgid "Backspace in Add mode"
-msgstr "Backspace v režimu změn"
+msgstr "Backspace v režimu přidávání"
 
 msgid "Cannot add a node outside of the world."
 msgstr "Nemůžu přidat uzel ležící mimo svět."
@@ -2193,7 +2194,7 @@ msgid "Switch angle snapping mode while drawing"
 msgstr "Přepínat režim přichytávání úhlů během kreslení"
 
 msgid "Toggle snapping by {0}"
-msgstr "přepínat přichytávání {0}"
+msgstr "Přepnout přichytávání o {0}"
 
 msgid "Show helper geometry"
 msgstr "Ukázat pomocnou geometrii"
@@ -2223,10 +2224,10 @@ msgid "Switch dual alignment mode while extruding"
 msgstr "Zapnout režim dvojitého zarovnávání při vytahování"
 
 msgid "Extrude"
-msgstr "Tažení"
+msgstr "Vytáhnout"
 
 msgid "Create areas"
-msgstr "Roztažení ploch"
+msgstr "Vytvořit plochy"
 
 msgid "Extrude Dual alignment"
 msgstr "Vytahování s dvojitým zarovnáváním"
@@ -2259,7 +2260,7 @@ msgid "Extrude: main line"
 msgstr "Vytáhnout: hlavní linie"
 
 msgid "Extrude: helper line"
-msgstr "Vytáhnout: pomocnou linii"
+msgstr "Vytáhnout: pomocná linie"
 
 msgid "Extrude Way"
 msgstr "Vytáhnout cestu"
@@ -2333,7 +2334,7 @@ msgid ""
 "The ways selected must form a simple branchless path"
 msgstr ""
 "Vytváření rovnoběžné cesty\n"
-"Vybrané cesty musí tvořit jedinou nerozvětvenou dráhu"
+"Vybrané cesty musí tvořit jedinou nerozvětvenou cestu"
 
 msgid "Drag play head"
 msgstr "Posunout ukazatel přehrávání"
@@ -2550,7 +2551,7 @@ msgid "<colon>"
 msgstr "<dvojtečka>"
 
 msgid "<equals>"
-msgstr "<se rovná>"
+msgstr "<rovná se>"
 
 msgid "<key>"
 msgstr "<klíč>"
@@ -2661,7 +2662,7 @@ msgid "''valuefragment'' nowhere in ''key''"
 msgstr "\"část hodnoty\" nikde v \"klíči\""
 
 msgid "''key'' with exactly ''value''"
-msgstr "\"klíč\" s přesně \"hodnotou\""
+msgstr "\"klíč\" přesně s \"hodnotou\""
 
 msgid "''key'' with any value"
 msgstr "\"klíč\" s jakoukoliv hodnotou"
@@ -2670,7 +2671,7 @@ msgid "''value'' in any key"
 msgstr "\"hodnota\" v libovolném klíči"
 
 msgid "matches if ''key'' exists"
-msgstr "shoduje se pokud \"klíč\" existuje"
+msgstr "shoduje se, pokud \"klíč\" existuje"
 
 msgid "matches if ''key'' is greater than ''value'' (analogously, less than)"
 msgstr ""
@@ -2690,10 +2691,10 @@ msgid "combinators"
 msgstr "Kombinace"
 
 msgid "logical and (both expressions have to be satisfied)"
-msgstr "logické AND (logický součin; obě podmínky jsou splněny)"
+msgstr "logické AND (logický součin; obě podmínky musí být splněny)"
 
 msgid "logical or (at least one expression has to be satisfied)"
-msgstr "logické OR (logický součet; alespoň jedna podmínka je splněna)"
+msgstr "logické OR (logický součet; alespoň jedna podmínka musí být splněna)"
 
 msgid "logical not"
 msgstr "logické NOT (logická negace; opačná hodnota)"
@@ -2809,16 +2810,17 @@ msgid "objects in current view"
 msgstr "objekty v současném zobrazení"
 
 msgid "objects (and all its way nodes / relation members) in current view"
-msgstr "objekty (a všechny uzly cesty/členy relace) v současném zobrazení"
+msgstr ""
+"objekty (a všechny jejich uzly cest/členy relace) v současném zobrazení"
 
 msgid "objects in downloaded area"
 msgstr "objekty ve stažené oblasti"
 
 msgid "objects (and all its way nodes / relation members) in downloaded area"
-msgstr "objekty (a všechny uzly cesty/členy relace) ve stažené oblasti"
+msgstr "objekty (a všechny jejich uzly cest/členy relace) ve stažené oblasti"
 
 msgid "No match found for ''{0}''"
-msgstr "Nebyly nalezeny záznamy pro \"{0}\""
+msgstr "Nenalezena shoda s ''{0}''"
 
 msgid "Nothing added to selection by searching for ''{0}''"
 msgstr "Do výběru nebylo nic přidáno hledáním \"{0}\""
@@ -2875,7 +2877,7 @@ msgid ""
 "\n"
 "{1}"
 msgstr ""
-"Regulární výraz \"{0}\" měl chybu při parsování, plná chyba:\n"
+"Regulární výraz \"{0}\" má chybu, celá chyba:\n"
 "\n"
 "{1}"
 
@@ -2886,7 +2888,7 @@ msgid "Expecting {0} after {1}"
 msgstr "Očekávám {0} po {1}"
 
 msgid "Range of primitive ids expected"
-msgstr "Očekává se sada identifikátorů (id) základních objektů"
+msgstr "Očekává se rozsah identifikátorů prvků"
 
 msgid "Range of changeset ids expected"
 msgstr "Očekává se sada identifikátorů (id) sad změn."
@@ -2906,10 +2908,10 @@ msgid "Positive integer expected"
 msgstr "Očekáváno celé kladné číslo"
 
 msgid "Range of numbers expected"
-msgstr "Číselný rozsah byl překročen"
+msgstr "Očekáván číselný rozsah"
 
 msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Neočekávaný symbol. Očekáváno {0}, nalezeno {1}"
+msgstr "Neočekávaný token. Očekáváno {0}, nalezeno {1}"
 
 msgid "Failed to parse MapCSS selector"
 msgstr "Selhalo procházení selektoru MapCSS"
@@ -2937,14 +2939,13 @@ msgstr ""
 "délku {2}. Délka hodnoty je {3}."
 
 msgid "Precondition Violation"
-msgstr "Selhal předpoklad"
+msgstr "Nedodržení předpokladu"
 
 msgid "{0} nodes in way {1} exceed the max. allowed number of nodes {2}"
-msgstr ""
-"{0} uzlů v cestě {1} překračuje nejvyšší povolený počet uzlů v cestě {2}"
+msgstr "{0} uzlů v cestě {1} překračuje nejvyšší povolený počet uzlů {2}"
 
 msgid "API Capabilities Violation"
-msgstr "Narušení schopností API"
+msgstr "Nedodržení schopností API"
 
 msgid "Cyclic dependency between relations:"
 msgstr "Kruhová závislost mezi relacemi:"
@@ -3050,10 +3051,10 @@ msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Odstranit \"{0}\" pro uzel ''{1}''"
 
 msgid "Remove \"{0}\" for way ''{1}''"
-msgstr "Odstranit \"{0}\" pro cestu ''{1}''"
+msgstr "Odstranit \"{0}\" z cesty ''{1}''"
 
 msgid "Remove \"{0}\" for relation ''{1}''"
-msgstr "Odstranit \"{0}\" pro relaci ''{1}''"
+msgstr "Odstranit \"{0}\" z relace ''{1}''"
 
 msgid "Set {0}={1} for node ''{2}''"
 msgstr "Nastavit {0}={1} pro uzel ''{2}''"
@@ -3089,13 +3090,13 @@ msgstr[1] "Nastaveny {0} značky u {1} objektů"
 msgstr[2] "Nastaveny {0} značky u {1} objektů"
 
 msgid "Replace \"{0}\" by \"{1}\" for"
-msgstr "Zaměňte \"{0}\" za \"{1}\" pro"
+msgstr "Zaměnit \"{0}\" za \"{1}\" pro"
 
 msgid "object"
 msgid_plural "objects"
 msgstr[0] "objekt"
 msgstr[1] "objekty"
-msgstr[2] "objekty"
+msgstr[2] "objektů"
 
 msgid "Change relation member role for {0} {1}"
 msgstr "Změnit roli člena relace {0} {1}"
@@ -3199,9 +3200,9 @@ msgstr "Uzly odstraněny z {0}"
 
 msgid "Rotate {0} node"
 msgid_plural "Rotate {0} nodes"
-msgstr[0] "Otočit uzel {0}"
-msgstr[1] "Otočit uzly {0}"
-msgstr[2] "Otočit uzly {0}"
+msgstr[0] "Otočit {0} uzel"
+msgstr[1] "Otočit {0} uzly"
+msgstr[2] "Otočit {0} uzlů"
 
 msgid "Scale {0} node"
 msgid_plural "Scale {0} nodes"
@@ -3249,13 +3250,13 @@ msgstr ""
 "Nelze vrátit příkaz ''{0}'', protože vrstva ''{1}'' již není dostupná"
 
 msgid "Resolve conflicts in coordinates in {0}"
-msgstr "Vyřešení konfliktu v souřadnicích pro {0}"
+msgstr "Vyřešit konflikt v souřadnicích pro {0}"
 
 msgid "Cannot resolve undecided conflict."
 msgstr "Nemohu vyřešit nerozhodnutý konflikt."
 
 msgid "Resolve conflicts in deleted state in {0}"
-msgstr "Vyřešení konfliktu ve stavu smazání pro {0}"
+msgstr "Vyřešit konflikt ve stavu smazání pro {0}"
 
 msgid "Set the ''modified'' flag for node {0}"
 msgstr "Nastavit příznak ''upraveno'' pro uzel {0}"
@@ -3359,7 +3360,8 @@ msgstr "Nelze vytvořit soubor {0}, bude použito jiné jméno souboru"
 
 msgid "IOError while creating file, autosave will be skipped: {0}"
 msgstr ""
-"IOError při vytváření souboru, automatické ukládání bude přeskočeno: {0}"
+"Chyba vstupu/výstupu při vytváření souboru, automatické ukládání bude "
+"přeskočeno: {0}"
 
 msgid "Unable to delete old backup file {0}"
 msgstr "Nemohu smazat starý záložní soubor {0}"
@@ -3540,7 +3542,7 @@ msgid "The revision file ''/REVISION'' is missing."
 msgstr "Soubor revizí  ''/REVISION'' chybí."
 
 msgid "Already registered a conflict for primitive ''{0}''."
-msgstr "Již je registrován konflikt pro objekt ''{0}''."
+msgstr "Již je registrován konflikt prvku ''{0}''."
 
 msgid "Decimal Degrees"
 msgstr "Desetinné stupně"
@@ -3571,25 +3573,27 @@ msgid "E"
 msgstr "V"
 
 msgid "Date of imagery: {0}"
-msgstr ""
+msgstr "Datum mapového podkladu: {0}"
 
 msgid "This imagery is marked as best in this region in other editors."
 msgstr ""
+"Tento mapový podklad je v jiných editorech označen jako nejlepší pro tuto "
+"oblast."
 
 msgid "{0} mirror server {1}"
-msgstr ""
+msgstr "{0} mirror server {1}"
 
 msgid "{0} mirror server"
-msgstr ""
+msgstr "{0} mirror server"
 
 msgid "Update default entries"
 msgstr "Aktualizovat výchozí položky"
 
 msgid "Update imagery ''{0}''"
-msgstr "Aktualizovat letecké snímky ''{0}''"
+msgstr "Aktualizovat mapový podklad ''{0}''"
 
 msgid "Drop old imagery ''{0}''"
-msgstr "Zahodit staré letecké snímky ''{0}''"
+msgstr "Zahodit starý mapový podklad ''{0}''"
 
 msgid "Projection ''{0}'' is not found, bookmark ''{1}'' is not usable"
 msgstr "Projekce ''{0}'' nenalezena, záložku ''{1}'' nelze použít"
@@ -3651,11 +3655,11 @@ msgid ""
 "Cannot assign a changesetId > 0 to a new primitive. Value of changesetId is "
 "{0}"
 msgstr ""
-"Novému objektu nelze přiřadit identifikátor sady změn > 0. Hodnota "
+"Novému prvku nelze přiřadit identifikátor sady změn > 0. Hodnota "
 "identifikátoru sady změn je {0}"
 
 msgid "A primitive with ID = 0 cannot be invisible."
-msgstr "objekt s id=0 nemůže být neviditelný"
+msgstr "Prvek s id=0 nemůže být neviditelný."
 
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
@@ -3711,12 +3715,13 @@ msgid ""
 "Cannot merge because either of the participating primitives is new and the "
 "other is not"
 msgstr ""
-"Nelze provést sloučení, protože některý ze zvolených objektů je nový, "
-"zatímco jiný není."
+"Nelze provést sloučení, protože některý ze zvolených prvků je nový, zatímco "
+"druhý není."
 
 msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
-msgstr "Nelze sloučit prvky s odlišnými id. Tento má id {0}, druhý {1}"
+msgstr ""
+"Nelze sloučit prvky s odlišnými identifikátory. Tento má id {0}, druhý {1}"
 
 msgid "node"
 msgid_plural "nodes"
@@ -3728,13 +3733,13 @@ msgid "way"
 msgid_plural "ways"
 msgstr[0] "cesta"
 msgstr[1] "cesty"
-msgstr[2] "cestami"
+msgstr[2] "cest"
 
 msgid "relation"
 msgid_plural "relations"
 msgstr[0] "relace"
 msgstr[1] "relace"
-msgstr[2] "relace"
+msgstr[2] "relací"
 
 msgid "closedway"
 msgstr "uzavřená cesta"
@@ -3746,7 +3751,7 @@ msgid ""
 "Tag collection cannot be applied to a primitive because there are keys with "
 "multiple values."
 msgstr ""
-"Kolekce značek nemůže být na datový prvek použita, protože obsahuje klíče s "
+"Kolekce značek nemůže být na prvek použita, protože obsahuje klíče s "
 "vícenásobnými hodnotami."
 
 msgid "<anonymous>"
@@ -3766,10 +3771,10 @@ msgstr "Kompletní uzel {0} s neplatnými souřadnicemi na cestě {1}"
 
 msgid ""
 "Cannot compare primitive with ID ''{0}'' to primitive with ID ''{1}''."
-msgstr "Nelze porovnat objekt s id ''{0}'' s objektem s id ''{1}''."
+msgstr "Nelze porovnat prvek s id ''{0}'' s prvkem s id ''{1}''."
 
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
-msgstr "Parametr {0} není v rozsahu 0..{1}, zadáno {2}"
+msgstr "Parametr {0} není v rozsahu 0..{1}. Obdržel jsem ''{2}''."
 
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr "Nelze načíst třídu map rendereru ''{0}''. Třída nebyla nalezena."
@@ -3800,13 +3805,13 @@ msgid "Wireframe Map Renderer"
 msgstr "Drátový mapový renderer"
 
 msgid "Renders the map as simple wire frame."
-msgstr "Renderuje mapu jako jednoduchý drátový model"
+msgstr "Vykresluje mapu jako jednoduchý drátový model"
 
 msgid "Styled Map Renderer"
 msgstr "Stylovaný mapový renderer"
 
 msgid "Renders the map using style rules in a set of style sheets."
-msgstr "Renderuje mapu za pomoci sad pravidel a stylů."
+msgstr "Vykresluje mapu za pomoci sad pravidel a stylů."
 
 msgid "inactive"
 msgstr "neaktivní"
@@ -3912,13 +3917,14 @@ msgid "Unexpected number of arguments for parameter ''+bounds'' (must be 4)"
 msgstr "Neočekávaný počet argumentů parametru ''+bounds'' (musí být 4)"
 
 msgid "Unknown parameter ''{0}''"
-msgstr "Neznámy parameter ''{0}''"
+msgstr "Neznámý parametr ''{0}''"
 
 msgid "Expected number argument for parameter ''{0}''"
 msgstr "Očekáván číselný argument pro parametr ''{0}''"
 
 msgid "Unable to parse value ''{1}'' of parameter ''{0}'' as number."
-msgstr "Hodnotu ''{1}'' parametru ''{0}'' se nepodařilo parsovat jako číslo."
+msgstr ""
+"Hodnotu ''{1}'' parametru ''{0}'' se nepodařilo interpretovat jako číslo."
 
 msgid ""
 "Unable to parse value ''{1}'' of parameter ''{0}'' as coordinate value."
@@ -3984,7 +3990,7 @@ msgid "Sinusoidal"
 msgstr "Sinusoidní"
 
 msgid "Swiss Oblique Mercator"
-msgstr "Švýcarské obecné (Swiss Oblique) Mercatorovo zobrazení"
+msgstr "Swiss Oblique Mercator"
 
 msgid "Transverse Mercator"
 msgstr "Transverzální Mercatorovo zobrazení"
@@ -4235,7 +4241,7 @@ msgid "Duplicated way nodes"
 msgstr "Duplicitní uzly v cestě"
 
 msgid "Checks for ways with identical consecutive nodes."
-msgstr "Zkontroluje cesty jestli neobsahují identické uzly za sebou."
+msgstr "Kontroluje cesty, jestli neobsahují identické uzly za sebou."
 
 msgid "Highways"
 msgstr "Silniční síť"
@@ -4671,7 +4677,7 @@ msgid "Validate property values and tags using complex rules."
 msgstr "Kontroluje platnost hodnot a značek pomocí komplexních pravidel."
 
 msgid "TagChecker source"
-msgstr "zdroj TagCheckeru"
+msgstr "Zdroj TagCheckeru"
 
 msgid "Data sources ({0})"
 msgstr "Zdroje dat ({0})"
@@ -4693,7 +4699,7 @@ msgid "Fix tags"
 msgstr "Opravit značky"
 
 msgid "Could not find element type"
-msgstr "Nelze najít typ elementu"
+msgstr "Nelze najít typ prvku"
 
 msgid "Incorrect number of parameters"
 msgstr "Nesprávný počet parametrů"
@@ -4726,10 +4732,10 @@ msgid "More than one \"to\" way found"
 msgstr "Nalezena více než jedna cesta \"to\""
 
 msgid "More than one \"via\" node found"
-msgstr "Nalezen více než jeden uzel v roli \"přes\""
+msgstr "Nalezen více než jeden uzel v roli \"via\""
 
 msgid "Cannot mix node and way for role \"via\""
-msgstr "Nelze kombinovat cesty a uzly v roli \"přes\""
+msgstr "Nelze kombinovat cesty a uzly v roli \"via\""
 
 msgid "No \"from\" way found"
 msgstr "Nenalezena žádná cesta \"from\""
@@ -4741,7 +4747,7 @@ msgid "\"from\" way equals \"to\" way"
 msgstr "cesta \"from\" je stejná jako cesta \"to\""
 
 msgid "No \"via\" node or way found"
-msgstr "Nenalezena žádná cesta nebo uzel \"via\""
+msgstr "Nenalezena žádná cesta ani uzel \"via\""
 
 msgid "The \"from\" way does not start or end at a \"via\" node."
 msgstr "Cesta ''z (from)'' nezačíná ani nekončí v uzlu ''přes (via)''."
@@ -4753,14 +4759,13 @@ msgid "The \"to\" way does not start or end at a \"via\" node."
 msgstr "Cesta ''do (to)'' nezačíná ani nekončí v uzlu ''přes (via)''."
 
 msgid "The \"from\" and the first \"via\" way are not connected."
-msgstr "Počáteční cesta ''z'' a první cesta ''přes'' nejsou propojeny."
+msgstr "Prvek ''from'' a první cesta ''via'' nejsou propojeny."
 
 msgid "The \"via\" ways are not connected."
-msgstr "Průjezdní cesty ''přes'' nejsou propojeny."
+msgstr "Cesty ''via'' nejsou propojeny."
 
 msgid "The last \"via\" and the \"to\" way are not connected."
-msgstr ""
-"Poslední průjezdní cesta ''přes'' a cílový cesta ''do'' nejsou propojeny."
+msgstr "Poslední prvek ''via'' a cesta ''to'' nejsou propojeny."
 
 msgid "Unclosed Ways"
 msgstr "Neuzavřené cesty"
@@ -4783,19 +4788,19 @@ msgid "amenities type {0}"
 msgstr "veřejná zařízení (amenity) {0}"
 
 msgid "sport type {0}"
-msgstr "sport typ {0}"
+msgstr "typ sportu {0}"
 
 msgid "tourism type {0}"
-msgstr "turistické typ {0}"
+msgstr "typ turistiky {0}"
 
 msgid "shop type {0}"
-msgstr "obchod typ {0}"
+msgstr "typ obchodu {0}"
 
 msgid "leisure type {0}"
 msgstr "volný čas (leisure) {0}"
 
 msgid "waterway type {0}"
-msgstr "vodní cesty typ {0}"
+msgstr "typ vodní cesty {0}"
 
 msgid "boundary type {0}"
 msgstr "typ hranice {0}"
@@ -4822,7 +4827,7 @@ msgid "Unconnected power ways"
 msgstr "Nepropojená elektrická vedení"
 
 msgid "This test checks if a way has an endpoint very near to another way."
-msgstr "Tento test kontroluje na blízkost koncových uzlů cest k jiným cestám"
+msgstr "Tento test kontroluje, zda cesta nekončí velmi blízko jiné cesty."
 
 msgid "Way end node near other highway"
 msgstr "Koncový uzel cesty poblíž jiné silnice"
@@ -4924,7 +4929,7 @@ msgid "House {0}"
 msgstr "Dům {0}"
 
 msgid "House number {0} at {1}"
-msgstr "Číslo domu {0} na {1}"
+msgstr "Číslo domu {0} v {1}"
 
 msgid "House number {0}"
 msgstr "Číslo domu {0}"
@@ -5035,7 +5040,7 @@ msgid "Click to close the dialog"
 msgstr "Klikněte pro zavření dialogu"
 
 msgid "Imagery offset"
-msgstr "Posunutí vrstvy snímků"
+msgstr "Posunutí mapového podkladu"
 
 msgctxt "menu"
 msgid "Imagery"
@@ -5111,7 +5116,7 @@ msgid "Disable access to the given resource(s), separated by comma"
 msgstr "Zakázat přístup k uvedeným zdrojům, odděleným čárkou"
 
 msgid "options provided as Java system properties"
-msgstr "Volby poskytované jako systémové vlastnosti Java"
+msgstr "volby poskytované jako vlastnosti systému Java"
 
 msgid "Change the JOSM directory name"
 msgstr "Změnit název adresáře JOSM"
@@ -5159,9 +5164,9 @@ msgid ""
 "      Java option to specify the maximum size of allocated memory in "
 "megabytes"
 msgstr ""
-"poznámka: Pro některé úlohy vyžaduje JOSM velké množství paměti. Pak je "
-"nezbytné přidat následující\n"
-"      konfiguraci Javy k specifikaci maxima alokované paměti v megabytech"
+"poznámka: Pro některé úlohy vyžaduje JOSM velké množství paměti. Pak může "
+"být nezbytné přidat následující\n"
+"      volbu Javy určující maximální velikost alokované paměti v megabytech"
 
 msgid "examples"
 msgstr "příklady"
@@ -5431,7 +5436,7 @@ msgid "The length of the new way segment being drawn."
 msgstr "Délka nově kresleného úseku cesty."
 
 msgid "The name of the object at the mouse pointer."
-msgstr "Jméno objektu na místě kurzoru myši."
+msgstr "Jméno objektu pod ukazatelem myši."
 
 msgid ""
 "Middle click again to cycle through.<br>Hold CTRL to select directly from "
@@ -5652,7 +5657,7 @@ msgid "List in role {0} is currently not participating in a compare pair."
 msgstr "Seznam v roli {0} není aktuálně součástí srovnávací dvojice."
 
 msgid "Unexpected value of parameter ''index''. Got {0}."
-msgstr "Neočekávaná hodnota parametru \"index\". Zadáno {0}"
+msgstr "Neočekávaná hodnota parametru \"index\". Obdrženo {0}"
 
 msgid "Item {0} not found in list."
 msgstr "Položka {0} nenalezena v seznamu."
@@ -5695,7 +5700,7 @@ msgid "> bottom"
 msgstr "> spodek"
 
 msgid "Copy my selected elements to the end of the list of merged elements."
-msgstr "Kopírovat mé vybrané elementy na konec seznamu slučovaných elementů."
+msgstr "Kopírovat mé vybrané prvky na konec seznamu slučovaných prvků."
 
 msgid "> before"
 msgstr "> před"
@@ -5703,8 +5708,7 @@ msgstr "> před"
 msgid ""
 "Copy my selected elements before the first selected element in the list of "
 "merged elements."
-msgstr ""
-"Kopírovat mé vybrané elementy na začátek seznamu slučovaných elementů."
+msgstr "Kopírovat mé vybrané prvky na začátek seznamu slučovaných prvků."
 
 msgid "> after"
 msgstr "> za"
@@ -5713,24 +5717,22 @@ msgid ""
 "Copy my selected elements after the first selected element in the list of "
 "merged elements."
 msgstr ""
-"Kopírovat mé vybrané elementy za první vybraný element ze seznamu "
-"slučovaných elementů."
+"Kopírovat mé vybrané prvky za první vybraný prvek ze seznamu slučovaných "
+"prvků."
 
 msgid "< top"
 msgstr "< začátek"
 
 msgid ""
 "Copy their selected element to the start of the list of merged elements."
-msgstr ""
-"Kopírovat cizí vybrané elementy na začátek seznamu slučovaných elementů."
+msgstr "Kopírovat cizí vybrané prvky na začátek seznamu slučovaných prvků."
 
 msgid "< bottom"
 msgstr "< spodek"
 
 msgid ""
 "Copy their selected elements to the end of the list of merged elements."
-msgstr ""
-"Kopírovat cizí vybrané elementy na konec seznamu slučovaných elementů."
+msgstr "Kopírovat cizí vybrané prvky na konec seznamu slučovaných prvků."
 
 msgid "< before"
 msgstr "< před"
@@ -5739,8 +5741,8 @@ msgid ""
 "Copy their selected elements before the first selected element in the list "
 "of merged elements."
 msgstr ""
-"Kopírovat cizí vybrané elementy před první vybraný element ze seznamu "
-"slučovaných elementů."
+"Kopírovat cizí vybrané prvky před první vybraný prvek ze seznamu slučovaných "
+"prvků."
 
 msgid "< after"
 msgstr "< po"
@@ -5749,14 +5751,14 @@ msgid ""
 "Copy their selected element after the first selected element in the list of "
 "merged elements"
 msgstr ""
-"Kopírovat cizí vybrané elementy za první vybraný element ze seznamu "
-"slučovaných elementů."
+"Kopírovat cizí vybrané prvky za první vybraný prvek ze seznamu slučovaných "
+"prvků."
 
 msgid "Copy all my elements to the target"
-msgstr "Kopírovat všechny mé elementy do cíle"
+msgstr "Kopírovat všechny mé prvky do cíle"
 
 msgid "Copy all their elements to the target"
-msgstr "Kopírovat všechny cizí elementy do cíle"
+msgstr "Kopírovat všechny cizí prvky do cíle"
 
 msgid "Up"
 msgstr "Nahoru"
@@ -5765,42 +5767,42 @@ msgid "Move up the selected entries by one position."
 msgstr "Posune vybrané položky o jednu pozici nahoru."
 
 msgid "Down"
-msgstr "Dolu"
+msgstr "Dolů"
 
 msgid "Move down the selected entries by one position."
-msgstr "Posunout vybrané elementy o jednu pozici dolu"
+msgstr "Posunout vybrané položky o jednu pozici dolů"
 
 msgid "Remove"
 msgstr "Odstranit"
 
 msgid "Remove the selected entries from the list of merged elements."
-msgstr "Odstranit vybrané položky ze seznamu slučovaných elementů."
+msgstr "Odstranit vybrané položky ze seznamu slučovaných prvků."
 
 msgid "Freeze"
 msgstr "Blokovat"
 
 msgid "Freeze the current list of merged elements."
-msgstr "Blokovat aktuální seznam slučovaných elementů."
+msgstr "Blokovat aktuální seznam slučovaných prvků."
 
 msgid "Unfreeze"
 msgstr "Odblokovat"
 
 msgid "Unfreeze the list of merged elements and start merging."
-msgstr "Odblokovat seznam slučovaných elementů a zahájit slučování."
+msgstr "Odblokovat seznam slučovaných prvků a zahájit slučování."
 
 msgid ""
 "<html>Click <strong>{0}</strong> to start merging my and their "
 "entries.</html>"
 msgstr ""
-"<html>Klikněte <strong>{0}</strong> pro zahájení slučování mých a cizích "
-"položek</html>"
+"<html>Klikněte na <strong>{0}</strong> pro zahájení slučování mých a cizích "
+"položek.</html>"
 
 msgid ""
 "<html>Click <strong>{0}</strong> to finish merging my and their "
 "entries.</html>"
 msgstr ""
-"Klikněte <strong>{0}</strong> pro dokončení slučování mých a cizích "
-"položek</html>"
+"Klikněte na <strong>{0}</strong> pro dokončení slučování mých a cizích "
+"položek.</html>"
 
 msgid "My version ({0} entry)"
 msgid_plural "My version ({0} entries)"
@@ -5842,7 +5844,7 @@ msgid "Nodes"
 msgstr "Body"
 
 msgid "Members"
-msgstr "Členové"
+msgstr "Členy"
 
 msgid "No pending tag conflicts to be resolved"
 msgstr "Nezbývají žádné další konflikty značek k vyřešení"
@@ -5860,7 +5862,7 @@ msgstr[1] "{0} zbývající konflikty značek k vyřešení"
 msgstr[2] "{0} zbývajících konfliktů značek k vyřešení"
 
 msgid "Nodes(resolved)"
-msgstr "Body(vyřešeno)"
+msgstr "Uzly (vyřešené)"
 
 msgid ""
 "Merged node list frozen. No pending conflicts in the node list of this way"
@@ -5869,13 +5871,13 @@ msgstr ""
 "uzlů této cesty."
 
 msgid "Nodes(with conflicts)"
-msgstr "Body(s konflikty)"
+msgstr "Uzly (s konflikty)"
 
 msgid "Pending conflicts in the node list of this way"
 msgstr "Nevyřešené konflikty v seznamu uzlů této cesty"
 
 msgid "Members(resolved)"
-msgstr "Členové(vyřešeno)"
+msgstr "Členy (vyřešené)"
 
 msgid ""
 "Merged member list frozen. No pending conflicts in the member list of this "
@@ -5916,7 +5918,7 @@ msgid ""
 "Properties in the merged element. They will replace properties in my "
 "elements when merge decisions are applied."
 msgstr ""
-"Vlastnosti slučovaného prvku. Nahradí vlastnosti v mých prvcích pokud bude "
+"Vlastnosti slučovaného prvku. Nahradí vlastnosti v mých prvcích, pokud bude "
 "sloučení aplikováno."
 
 msgid "Properties in their dataset, i.e. the server dataset"
@@ -5953,7 +5955,7 @@ msgid "Keep my deleted state"
 msgstr "Ponechat můj stav vymazáno"
 
 msgid "Keep their deleted state"
-msgstr "Ponechat cizí stav vymazáno"
+msgstr "Ponechat jejich stav vymazáno"
 
 msgid "Undecide conflict between deleted state"
 msgstr "Nerozhodnutý konflikt stavu vymazáno"
@@ -6008,10 +6010,10 @@ msgid "Their dataset does not include a tag with key {0}"
 msgstr "Cizí datová sada neobsahuje značku s klíčem {0}"
 
 msgid "Conflicts when combining primitives"
-msgstr "Konflikty při slučování objektů"
+msgstr "Konflikty při slučování prvků"
 
 msgid "Conflicts when combining ways - combined way is ''{0}''"
-msgstr "Konflikty při slučování cest - zkombinovaná cesta je ''{0}''"
+msgstr "Konflikty při slučování cest - sloučená cesta je ''{0}''"
 
 msgid "Conflicts when merging nodes - target node is ''{0}''"
 msgstr "Konflikt při spojování uzlů - cílový uzel je ''{0}''"
@@ -6023,10 +6025,10 @@ msgid "Cancel conflict resolution"
 msgstr "Zrušit řešení konfliktů"
 
 msgid "Apply resolved conflicts"
-msgstr "Aplikovat vyřešené konflikty"
+msgstr "Použít vyřešené konflikty"
 
 msgid "Apply"
-msgstr "Aplikovat"
+msgstr "Použít"
 
 msgid ""
 "You are about to combine {1} object, which is part of {0} "
@@ -6098,7 +6100,7 @@ msgid "Choose a value"
 msgstr "Vyberte hodnotu"
 
 msgid "none"
-msgstr "nic"
+msgstr "žádný"
 
 msgid "all"
 msgstr "všechny"
@@ -6107,7 +6109,7 @@ msgid "sum"
 msgstr "součet"
 
 msgid "Please decide which values to keep"
-msgstr "Rozhodněte se, které hodnoty nechat"
+msgstr "Rozhodněte se, prosím, které hodnoty ponechat"
 
 msgid "Value ''{0}'' is going to be applied for key ''{1}''"
 msgstr "Hodnota ''{0}'' bude použita pro klíč ''{1}''"
@@ -6121,13 +6123,13 @@ msgid "The key ''{0}'' and all its values are going to be removed"
 msgstr "Klíč ''{0}'' a všechny jeho hodnoty budou odstraněny"
 
 msgid "All values joined as ''{0}'' are going to be applied for key ''{1}''"
-msgstr "Hodnoty spojené jako ''{0}'' budou použity pro klíč ''{1}''"
+msgstr "Všechny hodnoty spojené jako ''{0}'' budou použity pro klíč ''{1}''"
 
 msgid "Tag collection does not include the selected value ''{0}''."
 msgstr "soubor značek neobsahuje zvolenou hodnotu ''{0}''"
 
 msgid "Not decided yet."
-msgstr "Zatím nerozhodnuto"
+msgstr "Zatím nerozhodnuto."
 
 msgid "Tags from nodes"
 msgstr "Značky z uzlů"
@@ -6139,7 +6141,7 @@ msgid "Tags from relations"
 msgstr "Značky z relací"
 
 msgid "Conflicts in pasted tags"
-msgstr "Konflikt ve vložených tazích"
+msgstr "Konflikty ve vložených značkách"
 
 msgid "Paste ..."
 msgstr "Vložit ..."
@@ -6172,13 +6174,13 @@ msgid "Position {0} is out of range. Current number of members is {1}."
 msgstr "Pozice {0} je mimo rozsah. Aktuální počet členů je {1}."
 
 msgid "Remove this relation member from the relation"
-msgstr "Odstranit tohoto člena z relace"
+msgstr "Odstranit tento člen z relace"
 
 msgid "Keep"
 msgstr "Ponechat"
 
 msgid "Keep this relation member for the target object"
-msgstr "Ponechat tohoto člena relace v cílovém objektu"
+msgstr "Ponechat tento člen relace v cílovém objektu"
 
 msgid "Undecided"
 msgstr "Nerozhodnuto"
@@ -6190,7 +6192,7 @@ msgid "Role:"
 msgstr "Role:"
 
 msgid "Enter a role for all relation memberships"
-msgstr "Zadat roli všech členů relace"
+msgstr "Zadat roli pro všechny členy relace"
 
 msgid "Tag modified relations with "
 msgstr "Označit změněné relace "
@@ -6228,7 +6230,7 @@ msgid ""
 "place of the original way in the relation.</html>"
 msgstr ""
 "<html>Spojené cesty jsou členy jedné nebo více relací. Rozhodněte, prosím, "
-"jestli chcete <strong>ponechat</strong> toto členství u spojené cesty, nebo "
+"jestli chcete <strong>ponechat</strong> tato členství u spojené cesty, nebo "
 "jestli je chcete <strong>odebrat</strong>.<br>Výchozí rozhodnutí je "
 "<strong>ponechat</strong> první cestu a <strong>odstranit</strong> ostatní "
 "cesty, které jsou členy té samé relace. Spojená cesta tedy zaujme v relaci "
@@ -6243,7 +6245,7 @@ msgid ""
 "the place of the original node in the relation.</html>"
 msgstr ""
 "<html>Spojené uzly jsou členy jedné nebo více relací. Rozhodněte, prosím, "
-"jestli chcete <strong>ponechat</strong> toto členství u cílového uzlu, nebo "
+"jestli chcete <strong>ponechat</strong> tato členství u cílového uzlu, nebo "
 "jestli je chcete <strong>odebrat</strong>.<br>Výchozí rozhodnutí je "
 "<strong>ponechat</strong> první uzel a <strong>odstranit</strong> ostatní "
 "uzly, které jsou členy té samé relace. Cílový uzel tedy zaujme v relaci "
@@ -6256,7 +6258,7 @@ msgid "Pos."
 msgstr "Pos."
 
 msgid "Orig. Way"
-msgstr "Orig. cesta"
+msgstr "Pův. cesta"
 
 msgid "Decision"
 msgstr "Rozhodnutí"
@@ -6359,7 +6361,7 @@ msgid "Open a web page for each selected changeset"
 msgstr "Otevřít www stránku pro každou vybranou sadu změn"
 
 msgid "Details"
-msgstr "Detaily"
+msgstr "Podrobnosti"
 
 msgid "Opens the Changeset Manager window for the selected changesets"
 msgstr "Otevře okno správce datových sad pro vybrané sady změn"
@@ -6368,7 +6370,7 @@ msgid "Command Stack"
 msgstr "Zásobník příkazů"
 
 msgid "Open a list of all commands (undo buffer)."
-msgstr "Otevřít historii příkazů"
+msgstr "Otevřít historii příkazů (pro funkci ''Zpět'')"
 
 msgid "Toggle: {0}"
 msgstr "Přepnout: {0}"
@@ -6392,7 +6394,7 @@ msgstr ""
 "a zvětší na ně zobrazení"
 
 msgid "Undo the selected and all later commands"
-msgstr "Vrátit vybraný příkaz a všechny pozdější"
+msgstr "Vrátit zpět vybraný příkaz a všechny pozdější příkazy"
 
 msgid "Redo the selected and all earlier commands"
 msgstr "Znovu provést vybraný příkaz a všechny dřívější"
@@ -6444,7 +6446,7 @@ msgid "Resolve conflicts"
 msgstr "Vyřešit konflikty"
 
 msgid "Cancel conflict resolution and close the dialog"
-msgstr "Zrušit řešení konfliktu a zavřít dialog"
+msgstr "Zrušit řešení konfliktů a zavřít dialog"
 
 msgid "Apply resolved conflicts and close the dialog"
 msgstr "Aplikovat řešení konfliktů a zavřít dialog"
@@ -6466,15 +6468,15 @@ msgid ""
 "applied.</strong><br>Click <strong>{1}</strong> to return to resolving "
 "conflicts.</html>"
 msgstr ""
-"<html> Nedokončili jste slučování rozdílů v tomto konfliktu.<br>Vyřešení "
+"<html>Nedokončili jste slučování rozdílů v tomto konfliktu.<br>Vyřešení "
 "konfliktu nelze aplikovat, dokud nebudou vyřešeny<br>všechny "
-"rozdíly.<br>Klikněte <strong>{0}</strong>, pokud chcete i přesto "
-"ukončit.<strong> Už<br> vyřešené rozdíly nebudou "
-"použity.</strong><br>Klikněte <strong>{1}</strong> pro návrat k řešení "
+"rozdíly.<br>Klikněte na <strong>{0}</strong>, pokud chcete i přesto "
+"skončit.<strong> Už<br>vyřešené rozdíly nebudou "
+"použity.</strong><br>Klikněte na <strong>{1}</strong> pro návrat k řešení "
 "konfliktů.</html>"
 
 msgid "Conflict not resolved completely"
-msgstr "Konflikt není vyřešen kompletně"
+msgstr "Konflikt není vyřešen úplně"
 
 msgid "Resolve conflicts for ''{0}''"
 msgstr "Vyřešit konflikty pro ''{0}''"
@@ -6516,7 +6518,7 @@ msgid "Filter objects and hide/disable them."
 msgstr "Filtruje objekty - schová/zneaktivní je."
 
 msgid "Enable filter"
-msgstr "Aktivovat filtr."
+msgstr "Aktivovat filtr"
 
 msgid "Multikey: {0}"
 msgstr "Kombinace kláves: {0}"
@@ -6640,10 +6642,10 @@ msgid "filtered/disabled"
 msgstr "odfiltrovaných/nepřístupných"
 
 msgid "has direction keys (reversed)"
-msgstr "má směrové klávesy (obráceně)"
+msgstr "má směrové klíče (obráceně)"
 
 msgid "has direction keys"
-msgstr "má směrové klávesy"
+msgstr "má směrové klíče"
 
 msgid "State: "
 msgstr "Stav: "
@@ -6652,7 +6654,7 @@ msgid "Data Set: "
 msgstr "Datová sada: "
 
 msgid "Edited at: "
-msgstr "Upraveno v: "
+msgstr "Upravené na: "
 
 msgid "<new object>"
 msgstr "<nový objekt>"
@@ -6667,7 +6669,7 @@ msgid "In changeset: "
 msgstr "V sadě změn: "
 
 msgid "Tags: "
-msgstr "Štítky: "
+msgstr "Značky: "
 
 msgid "Centroid: "
 msgstr "Těžiště: "
@@ -6709,7 +6711,7 @@ msgid "Advanced object info"
 msgstr "Rozšířené informace o objektu"
 
 msgid "map style"
-msgstr "Styl mapy"
+msgstr "styl mapy"
 
 msgid "edit counts"
 msgstr "počet editací"
@@ -6831,20 +6833,20 @@ msgid ""
 "Enter easting and northing (x and y) separated by space, comma or semicolon."
 msgstr ""
 "Zadejte easting a northing  (x a y, vzdálenost od poledníku a rovníku) "
-"oddělené mezerou, čárkou nebo středníkem."
+"oddělené mezerou, čárkou, nebo středníkem."
 
 msgid "Lat/Lon"
 msgstr "šířka/délka"
 
 msgid "East/North"
-msgstr "východ/západ"
+msgstr "Východ/Sever"
 
 msgid "Please enter a GPS coordinates"
-msgstr "Prosím, zadejte GPS souřadnice"
+msgstr "Prosím, zadejte souřadnice GPS"
 
 msgid "Please enter a Easting and Northing"
 msgstr ""
-"Zadejte prosím easting a northing (vzdálenost od poledníku a rovníku)"
+"Zadejte, prosím, easting a northing (vzdálenost od poledníku a rovníku)"
 
 msgid "Toggle visibility of layer: {0}"
 msgstr "Přepnout viditelnost vrstvy: {0}"
@@ -6853,16 +6855,16 @@ msgid "Open a list of all loaded layers."
 msgstr "Otevřít seznam všech nahraných vrstev."
 
 msgid "layer is currently visible (click to hide layer)"
-msgstr "vrstva je momentálně viditelná (klikněte pro schování)"
+msgstr "vrstva je momentálně viditelná (kliknutím ji skryjete)"
 
 msgid "layer is currently hidden (click to show layer)"
-msgstr "vrstva je momentálně skrytá (klikněte pro zobrazení)"
+msgstr "vrstva je momentálně skrytá (zobrazíte ji kliknutím)"
 
 msgid "this layer is the active layer"
 msgstr "tato vrstva je aktivní"
 
 msgid "this layer is not currently active (click to activate)"
-msgstr "tato vrstva je momentálně neaktivní (klikněte pro aktivaci)"
+msgstr "tato vrstva je momentálně neaktivní (aktivujete ji kliknutím)"
 
 msgid "scale follows native resolution of this layer"
 msgstr "měřítko následuje přirozené rozlišení této vrstvy"
@@ -6886,13 +6888,13 @@ msgid "Map Paint Styles"
 msgstr "Styly kreslení mapy"
 
 msgid "configure the map painting style"
-msgstr "Konfigurace stylu vykreslování mapy"
+msgstr "konfigurace stylu vykreslování mapy"
 
 msgid "MapPaint"
 msgstr "MapPaint"
 
 msgid "On/Off"
-msgstr "Zap/vyp"
+msgstr "Zap/Vyp"
 
 msgid "Turn selected styles on or off"
 msgstr "Vypnout nebo zapnout zvolené styly"
@@ -6907,7 +6909,7 @@ msgid "Reload from file"
 msgstr "Aktualizovat ze souboru"
 
 msgid "reload selected styles from file"
-msgstr "aktualizovat zvolené styly ze souboru"
+msgstr "znovu načíst zvolené styly ze souboru"
 
 msgid "Save as..."
 msgstr "Uložit jako..."
@@ -6955,7 +6957,7 @@ msgid "Background:"
 msgstr "Pozadí:"
 
 msgid "Style is currently active?"
-msgstr "Styl momentálně aktivní?"
+msgstr "Styl je momentálně aktivní?"
 
 msgid "No"
 msgstr "Ne"
@@ -7015,7 +7017,7 @@ msgid "Sort notes"
 msgstr "Seřadit poznámky"
 
 msgid "Sort"
-msgstr "Řadit"
+msgstr "Seřadit"
 
 msgid "Open the note in an external browser"
 msgstr "Otevřít poznámku v externím prohlížeči"
@@ -7028,7 +7030,7 @@ msgid "mixed"
 msgstr "smíšený"
 
 msgid "Choose the OSM object type"
-msgstr "Vyberte typ OSM objektu"
+msgstr "Vyberte typ objektu OSM"
 
 msgid "Object ID:"
 msgstr "id objektu:"
@@ -7120,7 +7122,7 @@ msgid "Toggle dynamic buttons"
 msgstr "Přepíná dynamická tlačítka"
 
 msgid "Open preferences for this panel"
-msgstr "Otevřít nastavení tohoto panelu"
+msgstr "Otevřít předvolby tohoto panelu"
 
 msgid "Undock the panel"
 msgstr "Vytrhnout panel"
@@ -7132,7 +7134,7 @@ msgstr ""
 "liště vlevo."
 
 msgid "Click to minimize/maximize the panel content"
-msgstr "Minimalizovat nebo maximalizovat obsah panelu"
+msgstr "Kliknutím minimalizujte nebo maximalizujte obsah panelu"
 
 msgid "Side buttons"
 msgstr "Postranní tlačítka"
@@ -7203,7 +7205,7 @@ msgid "Ignore whole group or individual elements?"
 msgstr "Ignorovat celou skupinu, nebo jednotlivé prvky?"
 
 msgid "Ignoring elements"
-msgstr "Ignoruji elementy"
+msgstr "Ignoruji prvky"
 
 msgid "Fixing errors ..."
 msgstr "Opravuji chyby ..."
@@ -7236,7 +7238,7 @@ msgid "Display the public discussion around this changeset"
 msgstr "Zobrazit veřejnou diskusi ohledně této sady změn"
 
 msgid "Changeset Management Dialog"
-msgstr "Dialog správy sady změn"
+msgstr "Dialog správy sad změn"
 
 msgid "Close the dialog"
 msgstr "Zavřít dialog"
@@ -7312,10 +7314,10 @@ msgid "User"
 msgstr "Uživatel"
 
 msgid "Created at"
-msgstr "Vytvořen v"
+msgstr "Vytvořeno v"
 
 msgid "Closed at"
-msgstr "Uzavřen v"
+msgstr "Uzavřeno v"
 
 msgid "Discussions"
 msgstr "Diskuse"
@@ -7327,14 +7329,14 @@ msgid_plural ""
 "<html>None of the selected objects is available in the current<br>edit layer "
 "''{0}''.</html>"
 msgstr[0] ""
-"<html>Vybraný objekt není dostupný v současné <br/>vrstvě změn "
+"<html>Vybraný objekt není dostupný v momentálně<br/>editované vrstvě "
 "''{0}''.</html>"
 msgstr[1] ""
-"<html>Žádný z vybraných objektů není dostupný v současné <br/>vrstvě změn "
-"''{0}''.</html>"
+"<html>Žádný z vybraných objektů není dostupný v momentálně<br/>editované "
+"vrstvě ''{0}''.</html>"
 msgstr[2] ""
-"<html>Žádný z vybraných objektů není dostupný v současné <br/>vrstvě změn "
-"''{0}''.</html>"
+"<html>Žádný z vybraných objektů není dostupný v momentálně<br/>editované "
+"vrstvě ''{0}''.</html>"
 
 msgid "Download and show the history of the selected objects"
 msgstr "Stáhni a zobraz historii vybraných objektů"
@@ -7394,7 +7396,7 @@ msgid "Open/Closed:"
 msgstr "Otevřená/Uzavřená:"
 
 msgid "Created by:"
-msgstr "Vytvořeno kým:"
+msgstr "Vytvořil:"
 
 msgid "Created on:"
 msgstr "Vytvořeno dne:"
@@ -7505,7 +7507,7 @@ msgid ""
 "include all changesets in the query.</html>"
 msgstr ""
 "<html>Zatrhněte, pokud chcete dotaz omezit pouze na vaše sady změn "
-"dat.<br>Jinak zahrne do dotazu všechny změny sady změn dat.</html>"
+"dat.<br>Jinak zahrne do dotazu všechny sady změn dat.</html>"
 
 msgid ""
 "<html>Please select one the following <strong>standard "
@@ -7588,7 +7590,7 @@ msgid ""
 "Please enter a date in the usual format for your locale.<br>Example: "
 "{0}<br>Example: {1}<br>Example: {2}<br>Example: {3}<br>"
 msgstr ""
-"Zadávejte prosím datum ve vašem obvyklém lokálním formátu.<br>Příklad: "
+"Zadejte, prosím, datum ve vašem obvyklém místním formátu.<br>Příklad: "
 "{0}<br>Příklad: {1}<br>Příklad: {2}<br>Příklad: {3}<br>"
 
 msgid "Query open changesets only"
@@ -7632,8 +7634,8 @@ msgid ""
 "<html>Please enter valid date/time values to restrict<br>the query to a "
 "specific time range.</html>"
 msgstr ""
-"<html>Pokud chcete dotaz omezit na specifický časový rozsah,<br>zadejte "
-"prosím platná vstupní data.</html>"
+"<html>Pokud chcete dotaz omezit na specifický časový rozsah,<br>zadejte, "
+"prosím, platná vstupní data.</html>"
 
 msgid "Invalid date/time values"
 msgstr "Neplatné hodnoty data/času"
@@ -7642,7 +7644,7 @@ msgid ""
 "Please enter a valid time in the usual format for your locale.<br>Example: "
 "{0}<br>Example: {1}<br>Example: {2}<br>Example: {3}<br>"
 msgstr ""
-"Zadávejte prosím čas ve vašem obvyklém lokálním formátu.<br>Příklad: "
+"Zadejte, prosím, čas ve vašem obvyklém místním formátu.<br>Příklad: "
 "{0}<br>Příklad: {1}<br>Příklad: {2}<br>Příklad: {3}<br>"
 
 msgid ""
@@ -7829,7 +7831,7 @@ msgid "Member Of"
 msgstr "Člen"
 
 msgid "Position"
-msgstr "Pozice"
+msgstr "Poloha"
 
 msgid "Tag filter"
 msgstr "Filtr značek"
@@ -7841,7 +7843,7 @@ msgid "Tags: {0} / Memberships: {1}"
 msgstr "značek: {0} / Členství: {1}"
 
 msgid "Delete the selected key in all objects"
-msgstr "Smaže zvolený klíč ve všech objektech"
+msgstr "Vymaže zvolený klíč ze všech objektů"
 
 msgid "Delete Tags"
 msgstr "Smazat značky"
@@ -7862,7 +7864,7 @@ msgid "Add Tag"
 msgstr "Přidat značku"
 
 msgid "Edit the value of the selected key for all objects"
-msgstr "Změnit hodnotu zvoleného klíče pro všechny objekty"
+msgstr "Změnit hodnotu zvoleného klíče ve všech objektech"
 
 msgid "Edit Tags"
 msgstr "Upravit značky"
@@ -8010,7 +8012,8 @@ msgid "to add first suggestion without closing the dialog"
 msgstr "přidat první návrh bez uzavření dialogu"
 
 msgid "Please enter the number of recently added tags to display"
-msgstr "Zadejte prosím počet nedávno přidaných značek pro zobrazení"
+msgstr ""
+"Zadejte, prosím, počet nedávno přidaných značek, které se mají zobrazovat"
 
 msgid "Please enter integer number between 0 and {0}"
 msgstr "Vložte prosím celé číslo mezi 0 a {0}"
@@ -8028,7 +8031,7 @@ msgid "Apply recent tag {0}"
 msgstr "Použít předchozí značku {0}"
 
 msgid "The key ''{0}'' is already used"
-msgstr "Klíč ''{0}'' je již použit"
+msgstr "Klíč ''{0}'' již je použit"
 
 msgid "Ignore key ''{0}''"
 msgstr "Ignorovat klíč ''{0}''"
@@ -8043,10 +8046,10 @@ msgid "You changed the value of ''{0}'' from ''{1}'' to ''{2}''."
 msgstr "Změnili jste hodnotu klíče ''{0}'' z ''{1}'' na ''{2}''."
 
 msgid "Edit the relation the currently selected relation member refers to."
-msgstr "Upravit relaci na kterou odkazuje vybraný člen"
+msgstr "Upravit relaci, na kterou odkazuje vybraný člen."
 
 msgid "Download all child relations (recursively)"
-msgstr "Stáhnout všechny potomky relace (rekurzivně)"
+msgstr "Stáhnout všechny relace, které jsou potomky (rekurzivně)"
 
 msgid "Download All Children"
 msgstr "Stáhnout všechny potomky"
@@ -8070,7 +8073,7 @@ msgid ""
 "<html>The child relation<br>{0}<br>is deleted on the server. It cannot be "
 "loaded</html>"
 msgstr ""
-"<html>Potomek relace<br>{0}<br>byl na serveru smazán, nelze jej "
+"<html>Dceřiná relace<br>{0}<br>byla na serveru smazána, nelze ji "
 "načíst.</html>"
 
 msgid "Relation is deleted"
@@ -8113,10 +8116,10 @@ msgid "Parent Relations"
 msgstr "Rodičovské relace"
 
 msgid "Child Relations"
-msgstr "Potomci relace"
+msgstr "Dceřiné relace"
 
 msgid "Enter a role and apply it to the selected relation members"
-msgstr "Zadat roli, která se aplikuje na vybrané členy relace"
+msgstr "Zadejte roli a aplikujte ji na vybrané členy relace"
 
 msgid "Apply Role:"
 msgstr "Aplikovat roli:"
@@ -8140,7 +8143,7 @@ msgid "Remove them, clean up relation"
 msgstr "Odstranit, vyčistit relaci"
 
 msgid "Ignore them, leave relation as is"
-msgstr "Ignorovat, ponechat relaci jak je"
+msgstr "Ignorovat, ponechat relaci, jak je"
 
 msgid "Sorry, shortcut \"{0}\" can not be enabled in Relation editor dialog"
 msgstr "Lituji, zkratku \"{0}\" nelze v okně Editor relací povolit"
@@ -8169,13 +8172,13 @@ msgid "Select previous Gap"
 msgstr "Vybrat předchozí mezeru"
 
 msgid "Select the previous relation member which gives rise to a gap"
-msgstr "Vybere předchozího člena relace, který není napojen dále"
+msgstr "Vybere předchozího člena relace, který není napojen dále."
 
 msgid "Select next Gap"
 msgstr "Vybrat následující mezeru"
 
 msgid "Select the next relation member which gives rise to a gap"
-msgstr "Vybere dalšího člena relace, který není napojen dále"
+msgstr "Vybere dalšího člena relace, který není napojen dále."
 
 msgid "Zoom to Gap"
 msgstr "Zvětšit na mezeru"
@@ -8190,10 +8193,10 @@ msgid "Cannot add {0} since it is not part of dataset"
 msgstr "Nelze přidat {0}, protože není částí sady dat"
 
 msgid "Download referring relations"
-msgstr "Stáhnout odkazované relace"
+msgstr "Stáhnout odkazující relace"
 
 msgid "There were {0} conflicts during import."
-msgstr "Došlo k  {0} konfliktům během importu."
+msgstr "Během importu došlo k {0} konfliktům."
 
 msgid "including immediate children of parent relations"
 msgstr "včetně přímých potomků rodičovské relace"
@@ -8211,7 +8214,7 @@ msgid "Edit the currently selected relation"
 msgstr "Upravit vybranou relaci"
 
 msgid "Apply Changes"
-msgstr "Aplikovat změny"
+msgstr "Použít změny"
 
 msgid "Create new relation in layer ''{0}''"
 msgstr "Vytvořit novou relaci ve vrstvě \"{0}\""
@@ -8244,7 +8247,7 @@ msgstr ""
 "Přidat všechny objekty vybrané v aktuální datové sadě před první vybraný člen"
 
 msgid "Apply the current updates"
-msgstr "Aplikovat aktuální změny"
+msgstr "Použít aktuální změny"
 
 msgid "Cancel the updates and close the dialog"
 msgstr "Zrušit změny a zavřít dialog"
@@ -8253,19 +8256,20 @@ msgid "Yes, save the changes and close"
 msgstr "Ano, uložit změny a zavřít"
 
 msgid "Click to save the changes and close this relation editor"
-msgstr "Kliknutím uložte změny a zavřete editor relací"
+msgstr "Kliknutím uložíte změny a zavřete editor relací"
 
 msgid "No, discard the changes and close"
 msgstr "Ne, zahodit změny a zavřít"
 
 msgid "Click to discard the changes and close this relation editor"
-msgstr "Klikněte pro zahození změn a zavřené editoru relací"
+msgstr "Kliknutím zahodíte změny a zavřete editor relací"
 
 msgid "Cancel, continue editing"
 msgstr "Zrušit, pokračovat v úpravách"
 
 msgid "Click to return to the relation editor and to resume relation editing"
-msgstr "Klikněte pro návrat k editaci relace"
+msgstr ""
+"Kliknutím se vrátíte do editoru relací a budete pokračovat v editaci relace"
 
 msgid ""
 "<html>The relation has been changed.<br><br>Do you want to save your "
@@ -8276,7 +8280,7 @@ msgid "Unsaved changes"
 msgstr "Neuložené změny"
 
 msgid "Delete the currently edited relation"
-msgstr "Smazat editovanou relaci"
+msgstr "Smazat právě editovanou relaci"
 
 msgid "Relation Editor: Download Members"
 msgstr "Editor relací: Stáhnout členy"
@@ -8291,13 +8295,13 @@ msgid "Download selected incomplete members"
 msgstr "Stáhnout vybrané nekompletní členy"
 
 msgid "Edit the relation the currently selected relation member refers to"
-msgstr "Upravit relaci na kterou odkazuje vybraný člen"
+msgstr "Upravit relaci, na kterou odkazuje vybraný člen relace."
 
 msgid "Relation Editor: Move Down"
 msgstr "Editor relací: Posun dolů"
 
 msgid "Move the currently selected members down"
-msgstr "Přesunout zvolené členy dolů"
+msgstr "Přesunout vybrané členy dolů"
 
 msgid "Relation Editor: Move Up"
 msgstr "Editor relací: Posun nahoru"
@@ -8355,7 +8359,7 @@ msgid "Remove all members referring to one of the selected objects"
 msgstr "Odstranit všechny členy odkazující na jeden z vybraných objektů"
 
 msgid "Reverse the order of the relation members"
-msgstr "Obrátí pořadí členů relace"
+msgstr "Obrátit pořadí členů relace"
 
 msgid "Reverse"
 msgstr "Obrátit"
@@ -8373,7 +8377,7 @@ msgid "Yes, create a conflict and close"
 msgstr "Ano, vytvořit konflikt a zavřít"
 
 msgid "Click to create a conflict and close this relation editor"
-msgstr "Klikněte pro vytvoření konfliktu a uzavření editoru relace"
+msgstr "Kliknutím vytvoříte konflikt a zavřete editor relace"
 
 msgid ""
 "<html>This relation has been changed outside of the editor.<br>You cannot "
@@ -8388,7 +8392,7 @@ msgid ""
 "<html>Layer ''{0}'' already has a conflict for object<br>''{1}''.<br>Please "
 "resolve this conflict first, then try again.</html>"
 msgstr ""
-"<html>Vrstva ''{0}'' už má konflikt na objektu <br>''{1}''.<br> Prosím "
+"<html>Vrstva ''{0}'' už má konflikt na objektu <br>''{1}''.<br> Prosím, "
 "vyřešte nejprve tento konflikt a potom to zkuste znova.</html>"
 
 msgid "Select objects for selected relation members"
@@ -8451,7 +8455,7 @@ msgid "way is connected to next relation member"
 msgstr "cesta je připojena na následujícího člena relace"
 
 msgid "way is not connected to previous or next relation member"
-msgstr "cesta není připojena na předchozího ani následujícího člena relace"
+msgstr "cesta není připojena na předchozího, ani následujícího člena relace"
 
 msgid "{0} - {1} ({2})"
 msgstr "{0} - {1} ({2})"
@@ -8466,7 +8470,7 @@ msgid "Bookmarks"
 msgstr "Záložky"
 
 msgid "<html>There is currently no download area selected.</html>"
-msgstr "<html>Aktuálně není vybrána žádná oblast je stažení.</html>"
+msgstr "<html>Momentálně není vybrána žádná oblast ke stažení.</html>"
 
 msgid ""
 "<html><strong>Current download area</strong> (minlon, minlat, maxlon, "
@@ -8484,7 +8488,8 @@ msgstr "Přidat záložku pro aktuálně vybranou stahovanou oblast"
 msgid ""
 "Currently, there is no download area selected. Please select an area first."
 msgstr ""
-"Aktuálně nemáte vybránu oblast pro stažení. Nejdříve prosím nějakou vyberte."
+"Momentálně nemáte vybranou žádnou oblast ke stažení. Nejdříve, prosím, "
+"nějakou oblast vyberte."
 
 msgid "Please enter a name for the bookmarked download area."
 msgstr "Zadejte prosím název záložky stahované oblasti."
@@ -8524,7 +8529,7 @@ msgid "Bounding Box"
 msgstr "Ohraničující rámeček"
 
 msgid "The string ''{0}'' is not a valid double value."
-msgstr "Řetězec ''{0}'' není platná hodnota pro reálné číslo (double)."
+msgstr "Řetězec ''{0}'' není platnou hodnotou reálného čísla."
 
 msgid "Value for latitude in range [-90,90] required."
 msgstr "Hodnota zeměpisné šířky musí být v rozmezí [-90,90]."
@@ -8536,10 +8541,10 @@ msgid "Data Sources and Types:"
 msgstr "Zdroje a typy dat:"
 
 msgid "OpenStreetMap data"
-msgstr "OpenStreetMap data"
+msgstr "Data OpenStreetMap"
 
 msgid "Select to download OSM data in the selected download area."
-msgstr "Vybrat ke stažení dat z OSM ve vybrané oblasti."
+msgstr "Vyberte pro stažení dat z OSM ve zvolené oblasti."
 
 msgid "Raw GPS data"
 msgstr "GPS Trasy"
@@ -8553,13 +8558,13 @@ msgid "Select to download notes in the selected download area."
 msgstr "Zvolte pro stažení poznámek v oblasti vybrané pro stahování."
 
 msgid "Download as new layer"
-msgstr "Uložit jako novou vrstvu"
+msgstr "Stáhnout do nové vrstvy"
 
 msgid ""
 "<html>Select to download data into a new data layer.<br>Unselect to download "
 "into the currently active data layer.</html>"
 msgstr ""
-"<html>Vybrat pro stažení dat do nové vrstvy.<br>Jinak jsou data stažena do "
+"<html>Vyberte pro stažení dat do nové vrstvy.<br>Jinak budou data stažena do "
 "aktivní vrstvy.</html>"
 
 msgid "Open this dialog on startup"
@@ -8573,6 +8578,12 @@ msgstr ""
 "JOSM.<br>Dialog můžete otevřít i ručně z menu Soubor nebo z nástrojové "
 "lišty.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr "Zvětšit na stažená data"
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr "Vyberte pro zobrazení celých nově stažených dat."
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -8581,13 +8592,15 @@ msgstr ""
 "pohybuje mapou, kolečkem nebo klávesami +/- zvětšujete/zmenšujete."
 
 msgid "No area selected yet"
-msgstr "Ještě není vybrána oblast"
+msgstr "Ještě není vybrána žádná oblast"
 
 msgid "Download area too large; will probably be rejected by server"
-msgstr "Stahovaná plocha je moc velká, server zřejmě odmítne váš požadavek"
+msgstr "Stahovaná plocha je moc velká. Server zřejmě odmítne váš požadavek."
 
 msgid "Download area ok, size probably acceptable to server"
-msgstr "Stahovaná plocha je v pořádku, velikost akceptována serverem"
+msgstr ""
+"Stahovaná plocha je v pořádku. Její velikost bude zřejmě serverem "
+"akceptována."
 
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Klikněte pro zavření dialogu a zrušení stahování"
@@ -8596,7 +8609,7 @@ msgid "Click to download the currently selected area"
 msgstr "Klikněte pro stažení aktuálně vybrané oblasti"
 
 msgid "Please select a download area first."
-msgstr "Prosím vyberte nejprve oblast stahování."
+msgstr "Prosím, vyberte nejprve oblast stahování."
 
 msgid ""
 "<html>Neither <strong>{0}</strong> nor <strong>{1}</strong> nor "
@@ -8620,11 +8633,11 @@ msgid ""
 "Select if the referrers of the object should be downloaded as well, "
 "i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
-"Zvolte, zda mají být staženy také odkazující objekty, t.j. rodičovské relace "
-"a pro uzly navíc cesty"
+"Zvolte, pokud mají být staženy také odkazující objekty, t. j. rodičovské "
+"relace a pro uzly navíc rodičovské cesty."
 
 msgid "Select if the members of a relation should be downloaded as well"
-msgstr "Zvolte, jestli mají být staženy také členy relace"
+msgstr "Zvolte, pokud mají být staženy také členy relace."
 
 msgid "Download referrers (parent relations and ways)"
 msgstr "Stáhnout odkazující objekty (rodičovské relace a cesty)"
@@ -8678,7 +8691,7 @@ msgid "Tile Numbers"
 msgstr "Čísla dlaždic"
 
 msgid "JOSM Help Browser"
-msgstr "JOSM prohlížeč nápovědy"
+msgstr "Prohlížeč nápovědy JOSM"
 
 msgid "Failed to read CSS file ''help-browser.css''. Exception is: {0}"
 msgstr ""
@@ -8733,7 +8746,7 @@ msgid ""
 "possible for help topics<br>on the help server <tt>{1}</tt>.</html>"
 msgstr ""
 "<html>Aktuální URL <tt>{0}</tt><br>je externí adresa. Upravovat je možné "
-"pouze témata umístěná<br>na serveru <tt>{1}</tt>.</html>"
+"pouze témata nápovědy umístěná<br>na serveru <tt>{1}</tt>.</html>"
 
 msgid "Reload the current help page"
 msgstr "Aktualizovat zobrazenou stránku nápovědy"
@@ -8782,8 +8795,7 @@ msgstr "Aktualizovat historii ze serveru"
 
 msgid "History not initialized yet. Failed to set reference primitive."
 msgstr ""
-"Historie ještě není inicializovaná. Nepodařilo se nastavit odkaz na základní "
-"objekt."
+"Historie ještě není inicializovaná. Nepodařilo se nastavit referenční prvek."
 
 msgid ""
 "Failed to set reference. Reference ID {0} does not match history ID {1}."
@@ -8798,26 +8810,26 @@ msgstr ""
 
 msgid "History not initialized yet. Failed to set current primitive."
 msgstr ""
-"Historie ještě není inicializovaná. Nepodařilo se nastavit základní objekt."
+"Historie ještě není inicializovaná. Nepodařilo se nastavit aktuální prvek."
 
 msgid ""
 "Failed to set current primitive. Current version {0} not available in "
 "history."
 msgstr ""
-"Nepodařilo se nastavit odkaz na objekt. Aktuální verze {0} nebyla v historii "
+"Nepodařilo se nastavit aktuální prvek. Aktuální verze {0} nebyla v historii "
 "nalezena."
 
 msgid "Load history"
 msgstr "Načíst historii"
 
 msgid "Loading history for node {0}"
-msgstr "Nahrávám historii pro uzel {0}"
+msgstr "Nahrávám historii uzlu {0}"
 
 msgid "Loading history for way {0}"
-msgstr "Nahrávám historii pro cestu {0}"
+msgstr "Nahrávám historii cesty {0}"
 
 msgid "Loading history for relation {0}"
-msgstr "Nahrávám historii pro relaci {0}"
+msgstr "Nahrávám historii relace {0}"
 
 msgid "Node {0}"
 msgstr "Uzel {0}"
@@ -8832,7 +8844,7 @@ msgid "Zoom to this node in the current data layer"
 msgstr "Zvětšit na tento uzel v aktuální datové vrstvě"
 
 msgid "Open a history browser with the history of this node"
-msgstr "Otevřít prohlížení historie s historií tohoto uzlu"
+msgstr "Otevřít prohlížeč historie s historií tohoto uzlu"
 
 msgid "Way {0}"
 msgstr "Cesta {0}"
@@ -8850,13 +8862,13 @@ msgid "Changeset source"
 msgstr "Zdroj sady změn"
 
 msgid "Imagery used"
-msgstr "Použité snímky"
+msgstr "Použitý mapový podklad"
 
 msgid "<b>Source</b>:"
 msgstr "<b>Zdroj</b>:"
 
 msgid "<b>Imagery</b>:"
-msgstr "<b>Snímky</b>"
+msgstr "<b>Mapový podklad</b>:"
 
 msgid ""
 "<html>Version <strong>{0}</strong> currently edited in layer ''{1}''</html>"
@@ -8945,9 +8957,9 @@ msgstr ""
 "<html>Nahrávání na server <strong>selhalo</strong>, protože na serveru je "
 "novější verze jednoho z vašich<br>uzlů, cest nebo relací.<br>Konflikt je "
 "způsoben <strong>{0}</strong> s id <strong>{1}</strong>,<br>na serveru je "
-"verze {2}, vaše verze je {3}.<br><br>Klikněte <strong>{4}</strong> pro "
-"synchronizaci konfliktního prvku.<br>Klikněte <strong>{5}</strong> pro "
-"synchronizaci kompletní místní datové sady se serverem.<br>Klikněte "
+"verze {2}, vaše verze je {3}.<br><br>Klikněte na <strong>{4}</strong> pro "
+"synchronizaci pouze konfliktního prvku.<br>Klikněte na <strong>{5}</strong> "
+"pro synchronizaci kompletní místní datové sady se serverem.<br>Klikněte na "
 "<strong>{6}</strong> pro přerušení nahrávání a pokračování v "
 "editaci.<br></html>"
 
@@ -8959,9 +8971,9 @@ msgid ""
 "editing.<br></html>"
 msgstr ""
 "<html>Nahrávání na server <strong>selhalo</strong>, protože na serveru je "
-"novější verze jednoho z vašich<br>uzlů, cest nebo relací.<br><br>Klikněte "
+"novější verze jednoho z vašich<br>uzlů, cest nebo relací.<br><br>Klikněte na "
 "<strong>{0}</strong> pro synchronizaci kompletní místní datové sady se "
-"serverem.<br>Klikněte <strong>{1}</strong> pro přerušení nahrávání a "
+"serverem.<br>Klikněte na <strong>{1}</strong> pro přerušení nahrávání a "
 "pokračování v editaci.<br></html>"
 
 msgid ""
@@ -9019,7 +9031,7 @@ msgid "Provide a brief comment for the changes you are uploading:"
 msgstr "Napište stručný komentář ke změnám, které nahráváte na server:"
 
 msgid "Enter an upload comment"
-msgstr "Zadejte komentář k nahraným datům"
+msgstr "Zadejte komentář k nahrávaným datům"
 
 msgid "Specify the data source for the changes"
 msgstr "Zadejte zdroj dat vašich změn"
@@ -9104,7 +9116,7 @@ msgstr ""
 "navrchu. Došlo k bezpečnostní výjimce."
 
 msgid "Enter credentials for OSM API"
-msgstr "Zadejte přihlašovací údaje pro OSM API"
+msgstr "Zadejte přihlašovací údaje pro API OSM"
 
 msgid "Enter credentials for host"
 msgstr "Zadejte přihlašovací údaje pro hostitele"
@@ -9119,23 +9131,23 @@ msgid "Warning: The password is transferred unencrypted."
 msgstr "Varování: Heslo je přenášeno nezašifrované."
 
 msgid "Please enter the user name of your OSM account"
-msgstr "Prosím, zadejte uživatelské jméno pro váš OSM účet"
+msgstr "Prosím, zadejte uživatelské jméno vašeho účtu OSM"
 
 msgid "Please enter the password of your OSM account"
-msgstr "Prosím, zadejte heslo pro váš OSM účet"
+msgstr "Prosím, zadejte heslo vašeho účtu OSM"
 
 msgid ""
 "Authenticating at the OSM API ''{0}'' failed. Please enter a valid username "
 "and a valid password."
 msgstr ""
-"Autentizace na OSM API ''{0}'' selhala. Zadejte prosím platné uživatelské "
+"Autentizace na API OSM ''{0}'' selhala. Zadejte, prosím, platné uživatelské "
 "jméno a heslo."
 
 msgid "Please enter the user name of your account"
-msgstr "Zadejte prosím uživatelské jméno svého účtu"
+msgstr "Zadejte, prosím, uživatelské jméno svého účtu"
 
 msgid "Please enter the password of your account"
-msgstr "Zadejte prosím heslo svého účtu"
+msgstr "Zadejte, prosím, heslo svého účtu"
 
 msgid ""
 "Authenticating at the host ''{0}'' failed. Please enter a valid username and "
@@ -9145,17 +9157,17 @@ msgstr ""
 "jméno a platné heslo."
 
 msgid "Please enter the user name for authenticating at your proxy server"
-msgstr "Prosím, zadejte uživatelské jméno pro přístup na proxy server"
+msgstr "Prosím, zadejte uživatelské jméno pro přístup na váš proxy server"
 
 msgid "Please enter the password for authenticating at your proxy server"
-msgstr "Prosím, zadejte heslo pro přístup na proxy server"
+msgstr "Prosím, zadejte heslo pro přístup na váš proxy server"
 
 msgid ""
 "Authenticating at the HTTP proxy ''{0}'' failed. Please enter a valid "
 "username and a valid password."
 msgstr ""
-"Autentizace na HTTP proxy ''{0}'' selhala. Zadejte prosím platné uživatelské "
-"jméno a heslo."
+"Autentizace na HTTP proxy ''{0}'' selhala. Zadejte, prosím, platné "
+"uživatelské jméno a heslo."
 
 msgid ""
 "Warning: depending on the authentication method the proxy server uses the "
@@ -9212,7 +9224,7 @@ msgstr ""
 "výjimce: {0}"
 
 msgid "Initializing nodes to download ..."
-msgstr "Inicializace bodů je stažení ..."
+msgstr "Inicializace uzlů ke stažení ..."
 
 msgid "Object could not be downloaded"
 msgid_plural "Some objects could not be downloaded"
@@ -9246,7 +9258,7 @@ msgid ""
 "Either edit the path manually in the text field or click the \"...\" button "
 "to open a file chooser."
 msgstr ""
-"Cestu lze zadat ručně do textového pole nebo vybrat kliknutím na tlačítko "
+"Cestu lze zadat ručně do textového pole, nebo vybrat kliknutím na tlačítko "
 "\"...\"."
 
 msgid "The bold text is the name of the layer."
@@ -9259,7 +9271,7 @@ msgid "Layer ''{0}'' is not backed by a file"
 msgstr "Vrstva ''{0}'' není uložená v souboru"
 
 msgid "File ''{0}'' is not writable. Please enter another file name."
-msgstr "Do souboru ''{0}'' nelze zapisovat. Zadejte prosím jiný název."
+msgstr "Do souboru ''{0}'' nelze zapisovat. Zadejte, prosím, jiný název."
 
 msgid "Click cell to change the file path."
 msgstr "Kliknutím na buňku změníte cestu k souboru."
@@ -9268,7 +9280,7 @@ msgid "Launch a file chooser to select a file"
 msgstr "Spustit výběr souboru"
 
 msgid "Select filename"
-msgstr "Vyberte soubor"
+msgstr "Vyberte název souboru"
 
 msgid "Open Recent"
 msgstr "Naposledy otevřené"
@@ -9286,10 +9298,10 @@ msgid "Saving layer to ''{0}'' ..."
 msgstr "Ukládám vrstvu do ''{0}'' ..."
 
 msgid "Unsaved changes - Save/Upload before exiting?"
-msgstr "Neuložené změny - Uložit/nahrát na server před ukončením?"
+msgstr "Neuložené změny - Uložit/Nahrát na server před ukončením?"
 
 msgid "Unsaved changes - Save/Upload before deleting?"
-msgstr "Neuložené změny - Uložit/nahrát na server před smazáním?"
+msgstr "Neuložené změny - Uložit/Nahrát na server před smazáním?"
 
 msgid "Unsaved changes - Save/Upload before restarting?"
 msgstr "Neuložené změny - Uložit/Nahrát na server před restartováním?"
@@ -9304,14 +9316,14 @@ msgid_plural ""
 "<html>{0} layers have unresolved conflicts.<br>Either resolve them first or "
 "discard the modifications.<br>Layers with conflicts:</html>"
 msgstr[0] ""
-"<html>{0} vrstva obsahuje nevyřešené konflikty.<br>Buď je vyřešte nebo "
-"zrušte modifikace.<br>Vrstva s konflikty:</html>"
+"<html>{0} vrstva obsahuje nevyřešené konflikty.<br>Buď je nejdřív vyřešte, "
+"nebo změny zrušte.<br>Vrstva s konflikty:</html>"
 msgstr[1] ""
-"<html>{0} vrstvy obsahují nevyřešené konflikty.<br>Buď je vyřešte nebo "
-"zrušte modifikace.<br>Vrstvy s konflikty:</html>"
+"<html>{0} vrstvy obsahují nevyřešené konflikty.<br>Buď je nejdřív vyřešte, "
+"nebo změny zrušte.<br>Vrstvy s konflikty:</html>"
 msgstr[2] ""
-"<html>{0} vrstev obsahuje nevyřešené konflikty.<br>Buď je vyřešte nebo "
-"zrušte modifikace.<br>Vrstvy s konflikty:</html>"
+"<html>{0} vrstev obsahuje nevyřešené konflikty.<br>Buď je nejdřív vyřešte, "
+"nebo změny zrušte.<br>Vrstvy s konflikty:</html>"
 
 msgid "Unsaved data and conflicts"
 msgstr "Neuložená data a konflikty"
@@ -9502,7 +9514,7 @@ msgid "Upload Changes"
 msgstr "Nahrát změny na server"
 
 msgid "Upload the changed primitives"
-msgstr "Nahrát změněné objekty"
+msgstr "Nahrát na server změněné prvky"
 
 msgid "Please revise upload comment"
 msgstr "Prosím opravte komentář změny"
@@ -9942,8 +9954,8 @@ msgid ""
 "Aerial imagery \"{0}\" might be misaligned. Please check its offset using "
 "GPS tracks!"
 msgstr ""
-"Letecké snímky \"{0}\" mohou být nepřesně polohovány. Zkontrolujte, prosím, "
-"jejich posun pomocí stop GPS!"
+"Mapový podklad \"{0}\" může být nepřesně polohován. Zkontrolujte, prosím, "
+"jeho posun pomocí stop GPS!"
 
 msgid "http://wiki.openstreetmap.org/wiki/Using_Imagery"
 msgstr "http://wiki.openstreetmap.org/wiki/Using_Imagery"
@@ -10015,7 +10027,7 @@ msgid "Imagery fade"
 msgstr "Zeslabení mapového podkladu"
 
 msgid "Unsupported imagery type: {0}"
-msgstr "Nepodporovaný typ obrázků: {0}"
+msgstr "Nepodporovaný typ mapového podkladu: {0}"
 
 msgid "Next marker"
 msgstr "Následující značka"
@@ -10086,6 +10098,9 @@ msgstr "Verze API: {0}"
 msgid "Upload is discouraged"
 msgstr "Nahrání se nedoporučuje"
 
+msgid "Upload is blocked"
+msgstr "Nahrání na server je zablokováno"
+
 msgid "Convert to GPX layer"
 msgstr "Převést do GPX vrstvy"
 
@@ -10268,7 +10283,7 @@ msgstr[1] "<html>GPX trase odpovídají <b>{0}</b> z <b>{1}</b> fotek.</html>"
 msgstr[2] "<html>GPX trase odpovídá <b>{0}</b> z <b>{1}</b> fotek.</html>"
 
 msgid "Timezone: {0}"
-msgstr "Časová zóna: {0}"
+msgstr "Časové pásmo: {0}"
 
 msgid "Minutes: {0}"
 msgstr "Minuty: {0}"
@@ -10572,16 +10587,16 @@ msgid "Precaching WMS"
 msgstr "Přednačtení WMS"
 
 msgid "Please select the imagery layer."
-msgstr "Vyberte si prosím vrstvu podkladu."
+msgstr "Vyberte si, prosím, vrstvu mapového podkladu."
 
 msgid "Select imagery layer"
-msgstr "Vyberte vrstvu podkladových map"
+msgstr "Vybrat vrstvu mapového podkladu"
 
 msgid "There are no imagery layers."
-msgstr "Nejsou tu žádné podkladové vrstvy."
+msgstr "Nejsou tu žádné vrstvy mapového podkladu."
 
 msgid "No imagery layers"
-msgstr "Žádné podkladové vrstvy."
+msgstr "Žádné vrstvy mapového podkladu."
 
 msgid "gps point"
 msgstr "GPS bod"
@@ -11863,22 +11878,22 @@ msgid "Car"
 msgstr "Automobil"
 
 msgid "Bicycle"
-msgstr "Cyklisté"
+msgstr "Jízdní kolo"
 
 msgid "Foot"
 msgstr "Pěší"
 
 msgctxt "Heat map"
 msgid "User Normal"
-msgstr ""
+msgstr "Uživatel normální"
 
 msgctxt "Heat map"
 msgid "User Light"
-msgstr ""
+msgstr "Uživatel světlé"
 
 msgctxt "Heat map"
 msgid "Traffic Lights"
-msgstr ""
+msgstr "Semafory"
 
 msgctxt "Heat map"
 msgid "Inferno"
@@ -11897,7 +11912,7 @@ msgid "Heat"
 msgstr "Heat"
 
 msgid "Use points instead of lines for heat map"
-msgstr ""
+msgstr "Použít pro heat mapu body namísto čar"
 
 msgid "Create markers when reading GPX"
 msgstr "Vytvořit časové značky v průběhu čtení GPX"
@@ -11906,7 +11921,7 @@ msgid "Fast drawing (looks uglier)"
 msgstr "Rychlé vykreslování (vypadá ošklivě)"
 
 msgid "Dynamic color range based on data limits"
-msgstr "Dynamické barvy závisle na hodnotách dat"
+msgstr "Dynamické barvy závislé na hodnotách dat"
 
 msgid "Smooth GPX graphics (antialiasing)"
 msgstr "Vyhladit GPX grafiku (antialiasing)"
@@ -11970,7 +11985,7 @@ msgid "Draw larger dots for the GPS points."
 msgstr "Zobrazovat větší tečky u GPS bodů."
 
 msgid "Width of drawn GPX line (0 for default)"
-msgstr "Šířka kreslených GPX linií (standardní hodnota = 0)"
+msgstr "Šířka kreslených linií GPX (0 pro výchozí)"
 
 msgid "Drawing width of GPX lines"
 msgstr "Šířka kreslených GPX linií"
@@ -12025,20 +12040,21 @@ msgid "Track and Point Coloring"
 msgstr "Barvy tras a bodů"
 
 msgid "Overlay gain adjustment"
-msgstr ""
+msgstr "Nastavení zisku překryvu"
 
 msgid "Lower limit of visibility"
-msgstr ""
+msgstr "Dolní práh viditelnosti"
 
 msgid "Adjust the gain of overlay blending."
-msgstr ""
+msgstr "Nastavit zisk smíchávání překryvu."
 
 msgid "Draw all GPX traces that exceed this threshold."
-msgstr ""
+msgstr "Vykreslit všechny stopy GPX, které překračují tento práh."
 
 msgid ""
 "Render engine uses points with simulated position error instead of lines. "
 msgstr ""
+"Při vykreslování se použijí body se simulovanou chybou polohy namísto čar. "
 
 msgid "Colors points and track segments by data limits."
 msgstr "Měnit barvu bodů a částí trasy v závislosti na velikosti hodnot dat."
@@ -12078,7 +12094,7 @@ msgstr "Zobrazit ISO datumy"
 
 msgid "Use native file choosers (nicer, but do not support file filters)"
 msgstr ""
-"Použít systémový výběr souborů (hezčí, ale nepodporují souborové filtry)"
+"Použít systémový výběr souborů (hezčí, ale nepodporuje souborové filtry)"
 
 msgid "Reverse zoom with mouse wheel"
 msgstr "Otočit zvětšování kolečkem myši"
@@ -12095,7 +12111,8 @@ msgstr "Práce bez přepínání režimů (ve stylu editoru Potlach)"
 msgid ""
 "Display buttons in right side menus only when mouse is inside the element"
 msgstr ""
-"Zobrazovat tlačítka v pravém panelu pouze pokud je kurzor myši uvnitř panelu"
+"Zobrazovat tlačítka v panelech napravo pouze, pokud je kurzor myši uvnitř "
+"panelu."
 
 msgid "ISO 8601"
 msgstr "ISO 8601"
@@ -12111,7 +12128,7 @@ msgid ""
 "not support some features like file filters"
 msgstr ""
 "Použije dialogy výběru souborů vypadajících jako ty z operačního systému. "
-"Vypadají lépe, ale nepodporují některé funkce jako třeba filtry souborů."
+"Vypadají lépe, ale nepodporují některé funkce, jako třeba filtry souborů."
 
 msgid "Check if you feel opposite direction more convenient"
 msgstr "Zaškrtněnte pokud shledáváte opačný směr pohodlnějším"
@@ -12142,7 +12159,7 @@ msgid "Default (Auto determined)"
 msgstr "Výchozí (automaticky)"
 
 msgid "Add Imagery URL"
-msgstr "Přidat URL podkladových map"
+msgstr "Přidat URL mapového podkladu"
 
 msgid "1. Enter URL"
 msgstr "1. Zadejte adresu (URL)"
@@ -12232,7 +12249,7 @@ msgid "Object Count"
 msgstr "Počet objektů"
 
 msgid "imagery fade"
-msgstr "zatmívání podkladových map"
+msgstr "zeslabení mapového podkladu"
 
 msgid "Fade Color: "
 msgstr "Barva zatmívání: "
@@ -12253,17 +12270,18 @@ msgid "Tile cache directory: "
 msgstr "Adresář keše dlaždic: "
 
 msgid "Maximum size of disk cache (per imagery) in MB: "
-msgstr "Maximální velikost diskové keše (na jednu sadu snímků) v MB: "
+msgstr ""
+"Maximální velikost diskové keše (na jednu sadu mapových podkladů) v MB: "
 
 msgid "Tiles zoom offset:"
 msgstr "Offset zvětšení dlaždic:"
 
 msgid "Imagery Preferences"
-msgstr "Nastavení vrstvy podkladových map"
+msgstr "Nastavení mapových podkladů"
 
 msgid "Modify list of imagery layers displayed in the Imagery menu"
 msgstr ""
-"Změnit seznam vrstev podkladových map zobrazených v nabídce Mapové podklady."
+"Změnit seznam vrstev mapových podkladů zobrazených v nabídce Mapové podklady."
 
 msgid "Common Settings"
 msgstr "Společná nastavení"
@@ -12275,7 +12293,7 @@ msgid "TMS Settings"
 msgstr "Nastavení TMS"
 
 msgid "Imagery providers"
-msgstr "Služby podkladových map"
+msgstr "Poskytovatelé mapových podkladů"
 
 msgid "Offset bookmarks"
 msgstr "Záložky posunu podkladu"
@@ -12284,7 +12302,7 @@ msgid "Cache contents"
 msgstr "Obsah keše"
 
 msgid "Imagery Background: Default"
-msgstr "Pozadí snímků: Výchozí"
+msgstr "Pozadí mapových podkladů: Výchozí"
 
 msgid "Available default entries:"
 msgstr "Dostupné výchozí položky:"
@@ -12308,13 +12326,13 @@ msgid "Menu Name"
 msgstr "Jméno v menu"
 
 msgid "Imagery URL"
-msgstr "URL podkladových map"
+msgstr "URL mapových podkladů"
 
 msgid "Menu Name (Default)"
 msgstr "Jméno v menu (výchozí)"
 
 msgid "Imagery URL (Default)"
-msgstr "URL podkladových map (výchozí)"
+msgstr "URL mapových podkladů (výchozí)"
 
 msgid "EULA license URL not available: {0}"
 msgstr "URL licence EULA není dostupné: {0}"
@@ -12412,7 +12430,7 @@ msgid "Configure whether to create backup files"
 msgstr "Konfigurace vytváření záložních souborů"
 
 msgid "Enable built-in icon defaults"
-msgstr "Povolit vestavěné standardní ikony"
+msgstr "Povolit výchozí nastavení vestavěné ikony"
 
 msgid "Available styles:"
 msgstr "Dostupné styly:"
@@ -12799,13 +12817,13 @@ msgid "Lambert CC9 Zone (France)"
 msgstr "Lambertova zóna CC9 (Francie)"
 
 msgid "Lambert CC Zone"
-msgstr "Lambert CC zóna"
+msgstr "Lambertova zóna CC"
 
 msgid "{0} (Corsica)"
 msgstr "{0} (Korsika)"
 
 msgid "Lambert 4 Zones (France)"
-msgstr "Lambertova zóna 4 (Francie)"
+msgstr "Lambertovy zóny 4 (Francie)"
 
 msgid "WGS84 Geographic"
 msgstr "WGS84 Geographic"
@@ -12853,13 +12871,13 @@ msgid "PUWG 1992 (Poland)"
 msgstr "PUWG 1992 (Polsko)"
 
 msgid "PUWG 2000 Zone {0} (Poland)"
-msgstr "PUWG 2000 Zóna {0} (Polsko)"
+msgstr "Zóna PUWG 2000 {0} (Polsko)"
 
 msgid "PUWG (Poland)"
 msgstr "PUWG (Polsko)"
 
 msgid "PUWG Zone"
-msgstr "PUWG Zóna"
+msgstr "Zóna PUWG"
 
 msgid "Swiss Grid (Switzerland)"
 msgstr "Švýcarský Grid"
@@ -13368,7 +13386,7 @@ msgid "Use error layer."
 msgstr "Použít vrstvu s chybami"
 
 msgid "Use the error layer to display problematic elements."
-msgstr "Použít vrstvu s chybami pro zobrazení problematických elementů."
+msgstr "Použít vrstvu s chybami pro zobrazení problematických prvků."
 
 msgid "Show informational level."
 msgstr "Zobrazovat i informační zprávy."
@@ -13419,7 +13437,7 @@ msgid "Use preset ''{0}''"
 msgstr "Použít přednastavení \"{0}\""
 
 msgid "Elements of type {0} are supported."
-msgstr "Objekty typu {0} nejsou podporovány."
+msgstr "Prvky typu {0} jsou podporovány."
 
 msgid "This preset also sets: {0}"
 msgstr "Tato předvolba také nastavuje: {0}"
@@ -13475,10 +13493,10 @@ msgid "Roles cannot appear more than once"
 msgstr "Role se nesmí vyskytovat víc než jednou"
 
 msgid "Preset role element without parent"
-msgstr "Přednastavený prvek role bez rodiče"
+msgstr "Prvek role předvolby bez rodiče"
 
 msgid "Preset sub element without parent"
-msgstr "Přednastavený sub prvek bez rodiče"
+msgstr "Pod-prvek předvolby bez rodiče"
 
 msgid "Error parsing {0}: "
 msgstr "Chyba parsování {0}: "
@@ -13517,8 +13535,8 @@ msgid ""
 "Warning in tagging preset \"{0}-{1}\": Ignoring ''{2}'' attribute as ''{3}'' "
 "elements are given."
 msgstr ""
-"Varování o předvolbách značení \"{0}-{1}\": Ignoruji atribut ''{2}'',protože "
-"byly zadané elementy ''{3}''"
+"Varování o předvolbách značení \"{0}-{1}\": Ignoruji atribut ''{2}'', "
+"protože byly zadané prvky ''{3}''"
 
 msgid ""
 "Broken tagging preset \"{0}-{1}\" - Java method given in ''values_from'' is "
@@ -13628,8 +13646,8 @@ msgid ""
 "The current value is not a valid changeset ID. Please enter an integer value "
 "> 0"
 msgstr ""
-"Aktuální hodnota nemůže být ID sady změn. Zadejte prosím celé číslo větší "
-"než nula."
+"Aktuální hodnota nemůže být platné id sady změn. Zadejte prosím celé číslo "
+"větší než nula."
 
 msgid "Add a new source to the list."
 msgstr "Přidat nový zdroj do seznamu."
@@ -13705,8 +13723,8 @@ msgid ""
 "Illegal value for mandatory attribute ''{0}'' of type OsmPrimitiveType. Got "
 "''{1}''."
 msgstr ""
-"nedovolená hodnota povinného atributu ''{0}'' typu OsmPrimitiveType, zadáno "
-"''{1}''"
+"Nedovolená hodnota povinného atributu ''{0}'' typu OsmPrimitiveType.  "
+"Obdrženo ''{1}''."
 
 msgid ""
 "Way with external ID ''{0}'' includes missing node with external ID ''{1}''."
@@ -13727,7 +13745,7 @@ msgid ""
 "Relation with external id ''{0}'' refers to a missing primitive with "
 "external id ''{1}''."
 msgstr ""
-"Relace s externím ID ''{0}'' odkazuje na chybějící prvek s externím ID "
+"Relace s externím id ''{0}'' odkazuje na chybějící prvek s externím id "
 "''{1}''."
 
 msgid "Deleted member {0} is used by relation {1}"
@@ -13833,12 +13851,12 @@ msgstr ""
 msgid ""
 "Unexpected parameters for HTTP proxy. Got host ''{0}'' and port ''{1}''."
 msgstr ""
-"Neočekávané hodnoty pro HTTP proxy. Nalezen hostitel ''{0}'' a port ''{1}''."
+"Neočekávané hodnoty pro HTTP proxy. Obdržen hostitel ''{0}'' a port ''{1}''."
 
 msgid ""
 "Unexpected parameters for SOCKS proxy. Got host ''{0}'' and port ''{1}''."
 msgstr ""
-"Neočekávané hodnoty pro SOCKS proxy. Nalezen hostitel ''{0}'' a port ''{1}''."
+"Neočekávané hodnoty pro SOCKS proxy. Obdržen hostitel ''{0}'' a port ''{1}''."
 
 msgid ""
 "Connection to proxy ''{0}'' for URI ''{1}'' failed. Exception was: {2}"
@@ -13858,7 +13876,7 @@ msgid "Parsing response from server..."
 msgstr "Zpracovávám odpověď ze serveru..."
 
 msgid "Unexpected XML element with name ''{0}''"
-msgstr "Neočekávaný XML element s názvem ''{0}''"
+msgstr "Neočekávaný XML prvek s názvem ''{0}''"
 
 msgid "Could not export ''{0}''."
 msgstr "Nemohu exportovat \"{0}\""
@@ -14083,7 +14101,7 @@ msgstr "neočekávaný formát id získaný ze serveru, získáno ''{0}''"
 msgid ""
 "Unexpected format of new version of modified primitive ''{0}''. Got ''{1}''."
 msgstr ""
-"neočekávaný formát nové verze modifikovaného prvku ''{0}'', zadáno ''{1}''"
+"Neočekávaný formát nové verze změněného prvku ''{0}''. Obdrženo ''{1}''."
 
 msgid "Creating changeset..."
 msgstr "Vytvářím sadu změn..."
@@ -14202,10 +14220,10 @@ msgid "Illegal numeric value for attribute ''{0}''. Got ''{1}''."
 msgstr "Chybná číselná hodnota atributu ''{0}''. Nalezeno ''{1}''."
 
 msgid "Missing mandatory attribute ''{0}'' of XML element {1}."
-msgstr "Chybí povinný atribut ''{0}'' XML elementu {1}."
+msgstr "Chybí povinný atribut ''{0}'' XML prvku {1}."
 
 msgid "Undefined element ''{0}'' found in input stream. Aborting."
-msgstr "Nedefinovaný element ''{0}'' nalezen ve vstupních datech. Přerušuji."
+msgstr "Ve vstupních datech nalezen nedefinovaný prvek ''{0}''. Přerušuji."
 
 msgid "Parsing list of changesets..."
 msgstr "Procházení seznamu sad změn…"
@@ -14265,7 +14283,7 @@ msgid "Missing mandatory attribute ''{0}'' on <nd> of way {1}."
 msgstr "Chybějící povinný atribut ''{0}'' na <nd> v cestě {1}"
 
 msgid "Illegal value of attribute ''ref'' of element <nd>. Got {0}."
-msgstr "Neplatná hodnota atributu ''ref'' elementu <nd>. Nalezeno {0}"
+msgstr "Neplatná hodnota atributu ''ref'' prvku <nd>. Dostal jsem {0}."
 
 msgid "Deleted relation {0} contains members"
 msgstr "Smazaná relace {0} obsahuje členy"
@@ -14293,7 +14311,7 @@ msgid "Missing key or value attribute in tag."
 msgstr "Ve značce chybí klíč nebo hodnota."
 
 msgid "Undefined element ''{0}'' found in input stream. Skipping."
-msgstr "Nedefinovaný prvek ''{0}'' nalezený ve vstupních datech. Přeskakuji."
+msgstr "Ve vstupních datech nalezen nedefinovaný prvek ''{0}''. Přeskakuji."
 
 msgid "Illegal object with ID=0."
 msgstr "Neplatný objekt s id=0"
@@ -14302,21 +14320,21 @@ msgid ""
 "Illegal value for attribute ''version'' on OSM primitive with ID {0}. Got "
 "{1}."
 msgstr ""
-"Neplatná hodnota vlastnosti \"version\" (verze) na základním objektu OSM s "
-"ID {0}. Přijatá hodnota je {1}"
+"Neplatná hodnota vlastnosti \"version\" (verze) na prvku s ID {0}. Obdrženo "
+"{1}."
 
 msgid ""
 "Normalizing value of attribute ''version'' of element {0} to {2}, API "
 "version is ''{3}''. Got {1}."
 msgstr ""
 "Normalizuji hodnotu atributu ''version'' prvku {0} na {2}, verze API je "
-"''{3}''. Nalezeno {1}."
+"''{3}''. Dostal jsem {1}."
 
 msgid "Unknown or unsupported API version. Got {0}."
 msgstr "Neznámá, nebo nepodporovaná verze API. Nalezeno {0}"
 
 msgid "Missing attribute ''version'' on OSM primitive with ID {0}."
-msgstr "Chybějící atribut ''version'' na OSM objektu s id {0}"
+msgstr "Chybějící atribut ''version'' (verze) u prvku OSM s id {0}."
 
 msgid ""
 "Illegal value for attribute ''changeset'' on new object {1}. Got {0}. "
@@ -14408,7 +14426,7 @@ msgid "Reading user info ..."
 msgstr "Získávám informace o uživateli ..."
 
 msgid "Starting to upload with one request per primitive ..."
-msgstr "Začínám nahrávat s jedním požadavkem na objekt ..."
+msgstr "Začínám nahrávat na server s jedním požadavkem na každý prvek ..."
 
 msgid "{0}% ({1}/{2}), {3} left. Uploading node ''{4}'' (id: {5})"
 msgstr "{0}% ({1}/{2}), {3} zbývá. Nahrávám uzel ''{4}'' (id: {5})"
@@ -14423,7 +14441,7 @@ msgid "Starting to upload in one request ..."
 msgstr "Začínám nahrávat vše v jednom požadavku ..."
 
 msgid "Value >0 expected for parameter ''{0}'', got {1}"
-msgstr "Hodnota >0 je očekávaná pro parametr ''{0}'', nalezeno {1}"
+msgstr "Hodnota >0 je očekávaná pro parametr ''{0}'', obdrženo {1}"
 
 msgid "Starting to upload in chunks..."
 msgstr "Začínám nahrávat po částech..."
@@ -14438,7 +14456,7 @@ msgid "Uploading data ..."
 msgstr "Nahrávám data na server ..."
 
 msgid "Unexpected id 0 for osm primitive found"
-msgstr "Nalezeno neočekávané id 0 základního OSM objektu"
+msgstr "Nalezeno neočekávané id 0 prvku OSM"
 
 msgid "Failed to evaluate {0}"
 msgstr "Selhalo vyhodnocení {0}"
@@ -14512,7 +14530,7 @@ msgid "Open local files"
 msgstr "Otevírat lokální soubory"
 
 msgid "Load imagery layers"
-msgstr "Načíst vrstvy podkladových map"
+msgstr "Načíst vrstvy mapových podkladů"
 
 msgid "Change the selection"
 msgstr "Měnit výběr"
@@ -14578,7 +14596,7 @@ msgid ""
 "Remote Control has been asked to load an imagery layer from the following "
 "URL:"
 msgstr ""
-"Vzdálené ovládání bylo požádáno o nahrání vrstvy podkladových map z "
+"Vzdálené ovládání bylo požádáno o načtení vrstvy mapových podkladů z "
 "následující adresy:"
 
 msgid "Remote imagery"
@@ -14685,7 +14703,7 @@ msgid ""
 "Version ''{0}'' of meta data for imagery layer is not supported. Expected: "
 "0.1"
 msgstr ""
-"Verze ''{0}'' metadat vrstvy podkladových map není podporována. Očekávána: "
+"Verze ''{0}'' metadat vrstvy mapových podkladů není podporována. Očekávána: "
 "0.1"
 
 msgid ""
@@ -14714,28 +14732,28 @@ msgid "Unsupported scheme ''{0}'' in URI ''{1}''."
 msgstr "Nepodporovaný režim ''{0}'' in URI ''{1}''."
 
 msgid "Unexpected root element ''{0}'' in session file"
-msgstr "Neočekávaný kořenový element ''{0}'' v souboru sezení"
+msgstr "Neočekávaný kořenový prvek ''{0}'' v souboru sezení"
 
 msgid "Version ''{0}'' of session file is not supported. Expected: 0.1"
 msgstr "Verze ''{0}'' souboru sezení není podporována. Očekáváno: 0.1"
 
 msgid "missing mandatory attribute ''index'' for element ''layer''"
-msgstr "chybí povinný atribut ''index'' elementu ''layer''"
+msgstr "chybí povinný atribut ''index'' prvku ''layer''"
 
 msgid "unexpected format of attribute ''index'' for element ''layer''"
-msgstr "neočekávaný formát atributu ''index'' elementu ''layer''"
+msgstr "neočekávaný formát atributu ''index'' prvku ''layer''"
 
 msgid "attribute ''index'' ({0}) for element ''layer'' must be unique"
-msgstr "atribut ''index'' ({0}) elementu ''layer'' musí být unikátní"
+msgstr "atribut ''index'' ({0}) prvku ''layer'' musí být unikátní"
 
 msgid "missing layer with index {0}"
 msgstr "chybí vrstva s indexem {0}"
 
 msgid "missing mandatory attribute ''name'' for element ''layer''"
-msgstr "chybí povinný atribut ''name'' elementu ''layer''"
+msgstr "chybí povinný atribut ''name'' prvku ''layer''"
 
 msgid "missing mandatory attribute ''type'' for element ''layer''"
-msgstr "chybí povinný atribut ''type'' elementu ''layer''"
+msgstr "chybí povinný atribut ''type'' prvku ''layer''"
 
 msgid "Unable to load layer"
 msgstr "Nelze načíst vrstvu"
@@ -15515,7 +15533,7 @@ msgid ""
 "the OSM community."
 msgstr ""
 "Oblast, kterou chcete stáhnout, je příliš rozsáhlá nebo obsahuje příliš "
-"mnoho prvků.<br>Vyberte menší oblast nebo použijte exportované soubory "
+"mnoho prvků.<br>Vyberte menší oblast, nebo použijte exportované soubory "
 "poskytované komunitou OSM."
 
 msgid ""
@@ -15894,14 +15912,14 @@ msgid ""
 "must return set of primitives"
 msgstr ""
 "Chyba ve vyhledávacím výrazu na pozici {0} - pravá strana logického "
-"součtu(|) musí vrátit sadu elementů"
+"součtu(|) musí vrátit sadu prvků"
 
 msgid ""
 "Error in search expression on position {0} - left side of or(|) expression "
 "must return set of primitives"
 msgstr ""
 "Chyba ve vyhledávacím výrazu na pozici {0} - levá strana logického součtu(|) "
-"musí vrátit sadu elementů"
+"musí vrátit sadu prvků"
 
 msgid ""
 "Error in search expression on position {0} - not(-) cannot be used in this "
@@ -15914,8 +15932,8 @@ msgid ""
 "Error in search expression on position {0} - expression must return "
 "different then current primitive"
 msgstr ""
-"Chyba ve vyhledávacím výrazu na pozici {0} - výraz musí vrátit elementy "
-"odlišné od stávajících"
+"Chyba ve vyhledávacím výrazu na pozici {0} - výraz musí vrátit prvky odlišné "
+"od aktuálního prvku"
 
 msgid "Unexpected token ({0}) on position {1}"
 msgstr "Neočekávaný znak ({0}) na pozici {1}"
@@ -15983,6 +16001,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "obytná oblast"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr "zastavitelné území (greenfield)"
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr "zeleň na návsi"
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "křoví"
@@ -15991,6 +16017,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr "prales"
 
+msgctxt "natural"
+msgid "grassland"
+msgstr "neudržovaná louka"
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "Přiřazená ulice (associatedStreet)"
@@ -16242,7 +16272,7 @@ msgid "OpenSeaMap"
 msgstr "OpenSeaMap"
 
 msgid "OpenStreetMap Carto (Standard)"
-msgstr "OpenStreetMap Carto (Standard)"
+msgstr "OpenStreetMap Carto (standardní)"
 
 msgid "OpenStreetMap (Standard Black & White)"
 msgstr "OpenStreetMap (standardní černobílá)"
@@ -16251,7 +16281,7 @@ msgid "OpenStreetMap (Mapnik, no labels)"
 msgstr "OpenStreetMap (Mapnik, bez popisek)"
 
 msgid "OpenStreetMap (French Style)"
-msgstr "OpenStreetMap (French Style)"
+msgstr "OpenStreetMap (francouzský styl)"
 
 msgid "OpenStreetMap (German Style)"
 msgstr "OpenStreetMap (německý styl)"
@@ -16284,7 +16314,7 @@ msgid "Strava running heatmap"
 msgstr "Strava heatmap - běh"
 
 msgid "Strava cycling and running heatmap"
-msgstr "Strava cycling and running heatmap"
+msgstr "Strava heatmap - jízda na kole a běh"
 
 msgid "Locator Overlay"
 msgstr "Překryvná vrstva Locator"
@@ -16323,7 +16353,7 @@ msgid "OSM Inspector: Highways"
 msgstr "OSM Inspector: Silnice"
 
 msgid "OSM Inspector: Area"
-msgstr "OSM Inspector: Area"
+msgstr "OSM Inspector: Plocha"
 
 msgid "OSM Inspector: Routing"
 msgstr "OSM Inspector: Navigace"
@@ -16332,7 +16362,7 @@ msgid "OSM Inspector: Addresses"
 msgstr "OSM Inspector: Adresy"
 
 msgid "OSM Inspector: Coastline (EU)"
-msgstr "OSM Inspector: Coastline (EU)"
+msgstr "OSM Inspector: Pobřeží (EU)"
 
 msgid "imagico.de OSM images for mapping: Prokletije Mountains"
 msgstr "imagico.de OSM images for mapping: Prokletije Mountains"
@@ -16436,6 +16466,18 @@ msgstr "VoGIS: Höhen und Gelände"
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr "OpenStreetMap (belgický styl)"
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr "OpenStreetMap (belgický styl - francouzsky)"
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr "OpenStreetMap (belgický styl - holandsky)"
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr "OpenStreetMap (belgický styl - německy)"
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr "AGIV Flanders most recent aerial imagery"
 
@@ -16448,9 +16490,15 @@ msgstr "AGIV Flanders GRB"
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr numerical imagery (2013)"
 
+msgid "URBISfr numerical imagery"
+msgstr "URBISfr numerical imagery"
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr "URBISnl numerical imagery (2013)"
 
+msgid "URBISnl numerical imagery"
+msgstr "URBISnl numerical imagery"
+
 msgid "URBIS 2009 aerial imagery"
 msgstr "URBIS 2009 aerial imagery"
 
@@ -16463,11 +16511,14 @@ msgstr "URBIS 2014 aerial imagery"
 msgid "URBIS 2015 aerial imagery"
 msgstr "URBIS 2015 aerial imagery"
 
+msgid "URBIS 2016 aerial imagery"
+msgstr "URBIS 2016 aerial imagery"
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr "SPW(allonie) PICC numerical imagery"
 
 msgid "SPW(allonie) most recent aerial imagery"
-msgstr ""
+msgstr "SPW(allonie) most recent aerial imagery"
 
 msgid "SPW(allonie) 2015 aerial imagery"
 msgstr "SPW(allonie) 2015 aerial imagery"
@@ -16759,28 +16810,28 @@ msgstr ""
 "(infrared)"
 
 msgid "Saxony latest aerial imagery"
-msgstr ""
+msgstr "Saxony latest aerial imagery"
 
 msgid "Saxony latest aerial imagery infrared"
-msgstr ""
+msgstr "Saxony latest aerial imagery infrared"
 
 msgid "Saxony aerial imagery 2005"
-msgstr ""
+msgstr "Saxony aerial imagery 2005"
 
 msgid "Saxony WebAtlasSN"
-msgstr ""
+msgstr "Saxony WebAtlasSN"
 
 msgid "Saxony topographic map"
-msgstr ""
+msgstr "Saxony topographic map"
 
 msgid "Saxony digital terrain model"
-msgstr ""
+msgstr "Saxony digital terrain model"
 
 msgid "Mainz all aerial imageries"
-msgstr ""
+msgstr "Mainz all aerial imageries"
 
 msgid "Mainz latest aerial imagery"
-msgstr ""
+msgstr "Mainz latest aerial imagery"
 
 msgid "imagico.de OSM images for mapping: Qasigiannguit"
 msgstr "imagico.de OSM images for mapping: Qasigiannguit"
@@ -16973,10 +17024,10 @@ msgid "ORT10LT (Lithuania)"
 msgstr "ORT10LT (Lithuania)"
 
 msgid "geoportail.lu all layers"
-msgstr ""
+msgstr "geoportail.lu all layers"
 
 msgid "geoportail.lu ortho 2016"
-msgstr ""
+msgstr "geoportail.lu ortho 2016"
 
 msgid "Luxembourg Inspire Railway"
 msgstr "Luxembourg Inspire Railway"
@@ -16991,10 +17042,10 @@ msgid "Niger Delta Oct 2012 Landsat"
 msgstr "Niger Delta Oct 2012 Landsat"
 
 msgid "PDOK Luchtfoto Beeldmateriaal 25cm (WMS)"
-msgstr ""
+msgstr "PDOK Luchtfoto Beeldmateriaal 25cm (WMS)"
 
 msgid "PDOK Luchtfoto Beeldmateriaal 25cm (WMTS)"
-msgstr ""
+msgstr "PDOK Luchtfoto Beeldmateriaal 25cm (WMTS)"
 
 msgid "Svalbard -Orthophoto 2009/2011 EPSG:25833"
 msgstr "Svalbard -Orthophoto 2009/2011 EPSG:25833"
@@ -17269,11 +17320,11 @@ msgstr "Stadt Zürich Übersichtsplan (Strassen, Gebäude, Hausnummer)"
 msgid "Stadt Zürich Luftbild 2011"
 msgstr "Stadt Zürich Luftbild 2011"
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
-msgstr "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
+msgstr "Canton Solothurn latest aerial imagery SOGIS RGB"
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
-msgstr "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
+msgstr "Canton Solothurn latest aerial imagery SOGIS Infrared"
 
 msgid "Canton de Génève 5cm (SITG 2011)"
 msgstr "Canton de Génève 5cm (SITG 2011)"
@@ -17393,8 +17444,8 @@ msgstr "Texas Orthophoto"
 msgid "Philadelphia 2015 Imagery"
 msgstr "Philadelphia 2015 Imagery"
 
-msgid "MD 2014 6 Inch Aerial Imagery"
-msgstr "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
+msgstr "MD Latest 6 Inch Aerial Imagery"
 
 msgid "MD Three Inch Aerial Imagery"
 msgstr "MD Three Inch Aerial Imagery"
@@ -17535,7 +17586,7 @@ msgid "OS Town Plans, Edinburgh 1893-1894 (NLS)"
 msgstr "OS Town Plans, Edinburgh 1893-1894 (NLS)"
 
 msgid "OS Town Plans, Edinburgh 1940s-1960s (NLS)"
-msgstr ""
+msgstr "OS Town Plans, Edinburgh 1940s-1960s (NLS)"
 
 msgid "OS Town Plans, Elgin 1868 (NLS)"
 msgstr "OS Town Plans, Elgin 1868 (NLS"
@@ -17731,6 +17782,13 @@ msgstr ""
 "basemap.at."
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+"Automaticky přiřazuje adresy vybraným objektům v Rakousku. Data (c) "
+"Österreichisches Adressregister."
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -17776,8 +17834,8 @@ msgstr ""
 "Implementuje příkazový řádek a umožňuje tvorbu vlastních příkazů. Kliknutím "
 "na odkaz zjistíte více informací o základních příkazech (oblouk, kruh atd.)"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
-msgstr "(Pozor: Experimentální!) Nástroj pro spojování (slučování) dat."
+msgid "Tool for conflating data (matching and merging)."
+msgstr "Nástroj pro spojování dat (párování a slučování)"
 
 msgid "Downloads new data when you pan/zoom"
 msgstr "Stáhne nová data, když posouváte nebo zvětšujete"
@@ -17875,7 +17933,7 @@ msgid "Allows to filter out unnecessary GPS tracks"
 msgstr "Umožňuje odfiltrovat nepotřebné trasy GPS"
 
 msgid "Visualizes routing information as a routing graph."
-msgstr "Vizualizuje informace o směrování v podobě grafu."
+msgstr "Vizualizuje navigační informace v podobě grafu."
 
 msgid ""
 "Provides the GSON library for other JOSM plugins. Not meant to be installed "
@@ -17891,13 +17949,14 @@ msgid "Generate Imagery XML bounds from a multipolygon"
 msgstr "Generuje ohraničení XML mapových podkladů podle multipolygonu"
 
 msgid "Export tiles from the imagery layer cache into the file system."
-msgstr "Exportovat dlaždice z keše vrstvy obrázků do souborového systému."
+msgstr ""
+"Exportovat dlaždice z keše vrstvy mapových podkladů do souborového systému."
 
 msgid ""
 "Database of imagery offsets: share and aquire imagery offsets with one "
 "button."
 msgstr ""
-"Databáze posuvů podkladových map. Sdílejte vámi vytvořené posuvy a načtěte "
+"Databáze posuvů mapových podkladů. Sdílejte vámi vytvořené posuvy a načtěte "
 "si posuvy od jiných uživatelů jedním kliknutím myši."
 
 msgid "WMSPlugin-style imagery adjustment mapmode"
@@ -17920,6 +17979,13 @@ msgstr "Doplněk pro import obrázků opatřených prostorovými souřadnicemi"
 msgid "Import vector graphics (SVG)"
 msgstr "Import vektorové grafiky (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+"Rozšiřuje režim Zvyšování přesnosti cest o pomocníky, kteří dovolují umístit "
+"uzly v přesných vzdálenostech a úhlech."
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr "Tento doplněk zjednodušuje mapování a úpravy vnitřních chodeb."
 
@@ -18130,6 +18196,13 @@ msgid "Plugin for reverting changesets"
 msgstr "Doplněk pro vracení sad změn zpět (revert)"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+"V postupných krocích rozšíří jednoduchou křižovatku na kruhový objezd. "
+"Zvolte uzel křížení nebo kruhový objezd a stiskněte Ctrl-Shift-R"
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -18147,7 +18220,7 @@ msgstr ""
 "definovány v souboru routes.xml v adresáři s doplňky."
 
 msgid "Provides routing capabilities."
-msgstr "Poskytuje směrování"
+msgstr "Poskytuje schopnost navigace"
 
 msgid "Loads data from SDS"
 msgstr "Nahrává data z SDS"
@@ -18330,7 +18403,7 @@ msgid "sett"
 msgstr "dlažební kostky"
 
 msgid "cobblestone"
-msgstr "dlažební kostky"
+msgstr "kočičí hlavy"
 
 msgid "grass_paver"
 msgstr "zatravňovací dlažba"
@@ -18348,7 +18421,7 @@ msgid "pebblestone"
 msgstr "oblázky"
 
 msgid "ground"
-msgstr "země"
+msgstr "zem"
 
 msgid "mud"
 msgstr "bahno"
@@ -18384,13 +18457,13 @@ msgid "intermediate"
 msgstr "střední"
 
 msgid "Wheels: city bike, wheelchair, scooter"
-msgstr "kola: městské kolo, invalidní vozík, skútr"
+msgstr "Kola: městské kolo, invalidní vozík, skútr"
 
 msgid "bad"
 msgstr "špatná"
 
 msgid "Robust Wheels: trekking bike, car, rickshaw"
-msgstr "robustní kola: trekové kolo, auto, rikša"
+msgstr "Robustní kola: trekové kolo, auto, rikša"
 
 msgid "very_bad"
 msgstr "velmi špatná"
@@ -18578,13 +18651,13 @@ msgid "Motorcycle"
 msgstr "Motocykly"
 
 msgid "Motorcar"
-msgstr "Motorová vozidla"
+msgstr "Osobní automobily"
 
 msgid "Reference"
 msgstr "Číslo"
 
 msgid "Operator"
-msgstr "Operátor"
+msgstr "Provozovatel"
 
 msgid "Service Times"
 msgstr "Časy bohoslužeb"
@@ -18599,7 +18672,7 @@ msgid "yes"
 msgstr "ano"
 
 msgid "limited"
-msgstr "omezené"
+msgstr "omezeně"
 
 msgid "no"
 msgstr "ne"
@@ -18665,10 +18738,10 @@ msgid "sushi"
 msgstr "suši"
 
 msgid "steak_house"
-msgstr "steak_house"
+msgstr "steak house"
 
 msgid "fish_and_chips"
-msgstr "Ryba a hranolky (UK)"
+msgstr "ryba a hranolky"
 
 msgid "chicken"
 msgstr "kuřata"
@@ -18692,7 +18765,7 @@ msgid "vietnamese"
 msgstr "vietnamská"
 
 msgid "fish"
-msgstr "rybí"
+msgstr "ryby"
 
 msgid "noodle"
 msgstr "nudle"
@@ -18987,7 +19060,7 @@ msgid "private"
 msgstr "soukromý"
 
 msgid "customers"
-msgstr "zákazníci"
+msgstr "pro zákazníky"
 
 msgid "permissive"
 msgstr "na povolení"
@@ -19032,7 +19105,7 @@ msgid "Descent (m)"
 msgstr "Klesání (m)"
 
 msgid "Roundtrip"
-msgstr "Okružní cesta"
+msgstr "Okružní trasa"
 
 msgid "Symbol description"
 msgstr "Popis symbolu"
@@ -19190,7 +19263,7 @@ msgid "110000;20000"
 msgstr "110000;20000"
 
 msgid "Branch operator"
-msgstr "Operátor odbočky"
+msgstr "Provozovatel odbočky"
 
 msgid "Amount of Cables"
 msgstr "Počet kabelů"
@@ -19294,7 +19367,7 @@ msgid "designated"
 msgstr "vyhrazeno (designated)"
 
 msgid "Boat"
-msgstr "Loď"
+msgstr "Člun"
 
 msgid "Motorboat"
 msgstr "Motorový člun"
@@ -19349,7 +19422,7 @@ msgid "Car brand"
 msgstr "Značka vozu"
 
 msgid "Motorcycle brand"
-msgstr "Značka motockyklu"
+msgstr "Značka motocyklu"
 
 msgid "From (initial stop)"
 msgstr "Z (výchozí zastávka)"
@@ -19444,7 +19517,7 @@ msgid "transition"
 msgstr "přechod"
 
 msgid "Motorway Link"
-msgstr "Dálnice - nájezd, rampa, kolektor"
+msgstr "Dálnice - nájezd"
 
 msgid "Trunk"
 msgstr "Čtyřproudá silnice"
@@ -19489,18 +19562,18 @@ msgid "Residential"
 msgstr "Místní komunikace (ulice)"
 
 msgid "Bicycle Road"
-msgstr "Cyklostezka"
+msgstr "Silnice jen pro cyklisty"
 
 msgid "Highway type"
 msgstr "Typ silnice"
 
 msgctxt "Highway"
 msgid "residential"
-msgstr "místní komunikace (residential)"
+msgstr "místní komunikace (ulice)"
 
 msgctxt "Highway"
 msgid "service"
-msgstr "obslužná (service)"
+msgstr "účelová komunikace"
 
 msgctxt "Highway"
 msgid "unclassified"
@@ -19542,7 +19615,7 @@ msgid "driveway"
 msgstr "příjezdová cesta"
 
 msgid "parking_aisle"
-msgstr "parkovací ulička"
+msgstr "ulička na parkovišti"
 
 msgid "drive-through"
 msgstr "prodej do auta (drive-through)"
@@ -19551,7 +19624,7 @@ msgid "emergency_access"
 msgstr "pro požární vozidla"
 
 msgid "Parking Aisle"
-msgstr "Parkovací ulička"
+msgstr "Ulička na parkovišti"
 
 msgid "Escape"
 msgstr "Únikový pruh"
@@ -19681,7 +19754,7 @@ msgid "Motor vehicles"
 msgstr "Motorová vozidla"
 
 msgid "Light Commercial Vehicles (goods)"
-msgstr "Lehká přepravní vozidla (do 3.5 t)"
+msgstr "Lehká užitková vozidla (do 3,5 t)"
 
 msgid "Heavy Goods Vehicles (hgv)"
 msgstr "Nákladní vozidla"
@@ -19711,7 +19784,7 @@ msgid "Min. speed (km/h)"
 msgstr "Min. rychlost (km/h)"
 
 msgid "Max. axleload (tonnes)"
-msgstr "Max. zátěž osy (tun)"
+msgstr "Max. zatížení nápravy (t)"
 
 msgid "Max. length (meters)"
 msgstr "Max. délka (m)"
@@ -19906,7 +19979,7 @@ msgid "lane"
 msgstr "pruh"
 
 msgid "track"
-msgstr "stopa (dráha)"
+msgstr "oddělená cyklostezka"
 
 msgid "opposite_lane"
 msgstr "pruh proti směru jednosměrky"
@@ -19924,10 +19997,10 @@ msgid "shared_lane"
 msgstr "sdílený jízdní pruh"
 
 msgid "Cycleway left"
-msgstr "Chodník pro cyklisty vlevo"
+msgstr "Cyklostezka vlevo"
 
 msgid "Cycleway right"
-msgstr "Chodník pro cyklisty vpravo"
+msgstr "Cyklostezka vpravo"
 
 msgid "Oneway (bicycle)"
 msgstr "Jednosměrná (kolo)"
@@ -20022,19 +20095,19 @@ msgid "Number"
 msgstr "Číslo"
 
 msgid "Services"
-msgstr "Služby motoristům (odpočívadla)"
+msgstr "Odpočívka (se službami)"
 
 msgid "Toilets"
 msgstr "Záchody"
 
 msgid "Rest Area"
-msgstr "Odpočinková zóna"
+msgstr "Odpočívka (bez služeb)"
 
 msgid "Drinking Water"
 msgstr "Pitná voda"
 
 msgid "Traffic Signal"
-msgstr "Semafory"
+msgstr "Semafor"
 
 msgid "Optional crossing attributes:"
 msgstr "Volitelné vlastnosti přechodu:"
@@ -20046,7 +20119,7 @@ msgid "uncontrolled"
 msgstr "neřízený"
 
 msgid "traffic_signals"
-msgstr "světelná signalizace"
+msgstr "semafor"
 
 msgid "island"
 msgstr "ostrůvek"
@@ -20086,7 +20159,7 @@ msgid "Crossing attendant"
 msgstr "Přechod s obsluhou"
 
 msgid "Cross by bicycle"
-msgstr "Přechod na kole"
+msgstr "Přechod pro jízdní kola"
 
 msgid "Cross on horseback"
 msgstr "Přechod na koni"
@@ -20150,10 +20223,10 @@ msgid "Passing Place"
 msgstr "Výhybna"
 
 msgid "Turning Circle"
-msgstr "Obratiště"
+msgstr "Obratiště (bez ostrůvku)"
 
 msgid "Turning Loop"
-msgstr "Smyčka"
+msgstr "Obratiště (s ostrůvkem)"
 
 msgid "City Limit Sign"
 msgstr "Dopravní značka začátek/konec obce"
@@ -20191,7 +20264,7 @@ msgid "Elevator"
 msgstr "Výtah"
 
 msgid "Grit Bin"
-msgstr "Zásobník písku (pro posyp)"
+msgstr "Nádoba s posypem"
 
 msgid "Mountain Pass"
 msgstr "Horský průsmyk"
@@ -20227,7 +20300,7 @@ msgid "plastic"
 msgstr "plast"
 
 msgid "Cycle Barrier"
-msgstr "Zábrana proti kolům"
+msgstr "Překážka pro cyklisty"
 
 msgid "Cattle Grid"
 msgstr "Mříž proti dobytku"
@@ -20236,10 +20309,10 @@ msgid "Bus Trap"
 msgstr "Zábrana průjezdná pouze autobusem"
 
 msgid "Spikes"
-msgstr "Jednosměrné hroty"
+msgstr "Ostnatý pás"
 
 msgid "Toll Booth"
-msgstr "Mýtná budka"
+msgstr "Výběr mýta"
 
 msgid "Border Control"
 msgstr "Hraniční kontrola"
@@ -20254,7 +20327,7 @@ msgid "Species"
 msgstr "Druh"
 
 msgid "Taxon"
-msgstr "Binomické jméno:"
+msgstr "Binomické jméno"
 
 msgid "Fence"
 msgstr "Plot"
@@ -20362,10 +20435,10 @@ msgid "Passageways"
 msgstr "Průjezdy/průchody"
 
 msgid "Building Passage"
-msgstr "Pasáž pod budovou"
+msgstr "Pasáž"
 
 msgid "Arcade"
-msgstr "Pasáž"
+msgstr "Arkáda"
 
 msgid "Open on left side"
 msgstr "Otevřená na levé straně"
@@ -20423,7 +20496,7 @@ msgid "Dam"
 msgstr "Hráz přehrady"
 
 msgid "Groyne"
-msgstr "Vlnolam"
+msgstr "Krátká pobřežní hráz"
 
 msgid "Breakwater"
 msgstr "Vlnolam"
@@ -20444,7 +20517,7 @@ msgid "detention"
 msgstr "suchá nádrž"
 
 msgid "Reservoir"
-msgstr "Umělá vodní nádrž"
+msgstr "Vodní nádrž"
 
 msgid "evaporator"
 msgstr "odpařovací"
@@ -20469,7 +20542,7 @@ msgid "Water Body"
 msgstr "Vodní plocha"
 
 msgid "canal"
-msgstr "průplav"
+msgstr "vodní kanál"
 
 msgid "lake"
 msgstr "jezero"
@@ -20487,13 +20560,13 @@ msgid "reservoir"
 msgstr "nádrž"
 
 msgid "river"
-msgstr "řeka (river)"
+msgstr "řeka"
 
 msgid "lock"
 msgstr "zdymadlo"
 
 msgid "wastewater"
-msgstr "odpadní"
+msgstr "čistící nebo usazovací nádrž"
 
 msgid "Salt Water"
 msgstr "Slaná voda"
@@ -20512,31 +20585,31 @@ msgid "Riverbank"
 msgstr "Břeh řeky"
 
 msgid "Wetland"
-msgstr "Mokřina"
+msgstr "Mokřad"
 
 msgid "Waterlogged area, either permanently or seasonally with vegetation."
-msgstr "Mokřina - podmáčená stále nebo sezónně s vegetací."
+msgstr "Mokřad - podmáčená oblast, buď stále nebo sezónně porostlá vegetací."
 
 msgid "swamp"
-msgstr "bažina"
+msgstr "močál"
 
 msgid "bog"
-msgstr "močál"
+msgstr "vrchoviště"
 
 msgid "marsh"
-msgstr "mokřina"
+msgstr "marše"
 
 msgid "reedbed"
-msgstr "rákosiny"
+msgstr "rákosina"
 
 msgid "saltmarsh"
 msgstr "slanisko"
 
 msgid "tidalflat"
-msgstr "přílivová oblast"
+msgstr "wattové pobřeží"
 
 msgid "mangrove"
-msgstr "mangrove"
+msgstr "mangrovy"
 
 msgid "wet_meadow"
 msgstr "vlhká louka"
@@ -20574,7 +20647,7 @@ msgstr ""
 "Velká vodní plocha, částečně obklopená pevninou, ale se širokým ústím."
 
 msgid "Shipping"
-msgstr "Loďstvo"
+msgstr "Lodní doprava"
 
 msgid "Ferry Terminal"
 msgstr "Přístaviště přívozu"
@@ -20592,7 +20665,7 @@ msgstr "vozidla"
 
 msgctxt "cargo"
 msgid "bicycle"
-msgstr "bicykly"
+msgstr "jízdní kola"
 
 msgctxt "cargo"
 msgid "hgv"
@@ -20606,7 +20679,7 @@ msgid "Ferry Route"
 msgstr "Trasa přívozu, trajektu"
 
 msgid "Marina"
-msgstr "Přístav"
+msgstr "Jachtařský přístav"
 
 msgid "Dump Station"
 msgstr "Výpusť odpadních vod"
@@ -20615,7 +20688,7 @@ msgid "public"
 msgstr "veřejný"
 
 msgid "Marine Fuel"
-msgstr "Lodní palivo"
+msgstr "Čerpací stanice paliva pro lodě"
 
 msgid "Agip"
 msgstr "Agip"
@@ -20741,7 +20814,7 @@ msgid "Floating"
 msgstr "Plovoucí"
 
 msgid "Lock Gate"
-msgstr "Plavební komora"
+msgstr "Vrata přechodové komory zdymadla"
 
 msgid "Turning Point"
 msgstr "Rozšířené místo pro otáčení lodí"
@@ -20792,7 +20865,7 @@ msgid "Preserved"
 msgstr "Historická trať"
 
 msgid "Light Rail"
-msgstr "Nadzemní dráha"
+msgstr "Rychlodráha"
 
 msgid "Subway"
 msgstr "Metro"
@@ -20857,7 +20930,7 @@ msgid "Railway Switch"
 msgstr "Výhybka"
 
 msgid "Railway Signal"
-msgstr "Železniční semafor"
+msgstr "Železniční signalizační zařízení"
 
 msgid "Railway milestone"
 msgstr "Železniční kilometrovník"
@@ -20866,7 +20939,7 @@ msgid "Aerialway"
 msgstr "Lanovka"
 
 msgid "Cable Car"
-msgstr "Kyvadlová kabinková lanovka"
+msgstr "Kabinová lanovka"
 
 msgid "Number of people per hour"
 msgstr "Počet osob za hodinu"
@@ -20875,7 +20948,7 @@ msgid "Number of people per car"
 msgstr "Počet lidí v kabince"
 
 msgid "Typical journey time in minutes"
-msgstr "Typický čas trasy v minutách"
+msgstr "Typický čas cesty v minutách"
 
 msgid "Has heating?"
 msgstr "Vyhřívaná?"
@@ -20884,13 +20957,13 @@ msgid "Chair Lift"
 msgstr "Sedačková lanovka"
 
 msgid "Number of people per chair"
-msgstr "Počet lidí na sedačku"
+msgstr "Počet lidí v sedačce"
 
 msgid "Has bubble?"
 msgstr "Má kryt?"
 
 msgid "Gondola"
-msgstr "Oběžná kabinková lanovka"
+msgstr "Kabinková lanovka (gondola)"
 
 msgid "Number of people per gondola"
 msgstr "Počet lidí v gondole"
@@ -20899,7 +20972,7 @@ msgid "Mixed Lift"
 msgstr "Smíšená lanovka"
 
 msgid "Number of people per gondola/chair"
-msgstr "Počet lidí na gondolu/sedačku"
+msgstr "Počet lidí v gondole/sedačce"
 
 msgid "Drag Lift"
 msgstr "Lyžařský vlek"
@@ -20924,7 +20997,7 @@ msgid "rope_tow"
 msgstr "kotvičkový"
 
 msgid "Magic Carpet"
-msgstr "Pojízdný pás"
+msgstr "Pojízdný koberec"
 
 msgid "Goods"
 msgstr "Nákladní"
@@ -20997,7 +21070,7 @@ msgid "kiosk"
 msgstr "kiosek"
 
 msgid "Diesel (Gas To Liquid - ultimate diesel)"
-msgstr "Diesel GTL (Gas To Liquid)"
+msgstr "Nafta GTL (Gas To Liquid)"
 
 msgid "Diesel for Heavy Good Vehicles"
 msgstr "Nafta pro nákladní automobily"
@@ -21120,7 +21193,7 @@ msgid "Rental"
 msgstr "Půjčovna"
 
 msgid "Sharing"
-msgstr "Carsharing (sdílené vlastnictví vozidel)"
+msgstr "Stanoviště systému sdílení aut"
 
 msgid "Motorcycle Dealer"
 msgstr "Obchodník s motocykly"
@@ -21156,49 +21229,49 @@ msgid "Clothes"
 msgstr "Oblečení"
 
 msgid "anchors"
-msgstr "Oko na zamknutí"
+msgstr "oko na zamknutí"
 
 msgid "ground_slots"
-msgstr "Betonový nebo dřevěný stojan jen na přední kolo"
+msgstr "štěrbiny v zemi pro kolo"
 
 msgid "informal"
-msgstr "Neoficiální vhodné místo"
+msgstr "neformální parkoviště"
 
 msgid "lockers"
-msgstr "Boxy na kolo"
+msgstr "skříňky"
 
 msgid "rack"
-msgstr "Stojan"
+msgstr "stojan"
 
 msgid "shed"
-msgstr "Přístřešek na kola"
+msgstr "přístřešek"
 
 msgid "stands"
-msgstr "Opěrné stání (typický tvar \"?\")"
+msgstr "opěrný stojánek"
 
 msgid "wall_loops"
-msgstr "Ocelový stojan jen na přední kolo (na zdi nebo na zemi)"
+msgstr "ocelový stojan jen na přední kolo (na zdi nebo na zemi)"
 
 msgid "Covered"
 msgstr "Krytý"
 
 msgid "Bike Dealer"
-msgstr "Prodejce kol"
+msgstr "Prodejce jízdních kol"
 
 msgid "Bicycles are sold"
-msgstr "Prodej kol"
+msgstr "Prodej jízdních kol"
 
 msgid "Second-hand bicycles are sold"
-msgstr "Prodej kol z druhé ruky"
+msgstr "Prodej jízdních kol z druhé ruky"
 
 msgid "Bicycles are repaired"
-msgstr "Oprava kol"
+msgstr "Oprava jizdních kol"
 
 msgid "Bicycles are rented"
-msgstr "Půjčovna kol"
+msgstr "Půjčovna jízdních kol"
 
 msgid "Free bicycle pump"
-msgstr "Pumpa pro kola zdarma"
+msgstr "Pumpa pro jízdní kola zdarma"
 
 msgid "Tools for do-it-yourself repair (may be a bike co-operative)"
 msgstr "Nástroje pro opravu svépomocí"
@@ -21207,7 +21280,7 @@ msgid "Bicycles are washed (for a fee)"
 msgstr "Mytí jízdních kol (za poplatek)"
 
 msgid "Public Bicycle Repair Station"
-msgstr "Veřejná opravna bicyklů"
+msgstr "Veřejná opravna jízdních kol"
 
 msgid "Chain tool"
 msgstr "Nástroj na řetěz"
@@ -21291,16 +21364,16 @@ msgid "Bus"
 msgstr "Autobus"
 
 msgid "Bus stop (legacy)"
-msgstr "Autobusová zastávka (původní)"
+msgstr "Autobusová zastávka (zastaralá)"
 
 msgid "Tram stop (legacy)"
-msgstr "Tramvajová zastávka (původní)"
+msgstr "Tramvajová zastávka (zastaralá)"
 
 msgid "Train"
 msgstr "Vlak"
 
 msgid "Railway halt (legacy)"
-msgstr "Vlaková zastávka (původní)"
+msgstr "Vlaková zastávka (zastaralá)"
 
 msgid "Trolleybus"
 msgstr "Trolejbus"
@@ -21355,7 +21428,7 @@ msgid "backward halt point"
 msgstr "zpětná zastávka"
 
 msgid "UIC-Reference"
-msgstr "UIC-Reference"
+msgstr "Číslo dle UIC"
 
 msgid "Railway Halt"
 msgstr "Vlaková zastávka"
@@ -21417,17 +21490,17 @@ msgid "yes"
 msgstr "ano"
 
 msgid "Beacon"
-msgstr "Vodní bóje"
+msgstr "Signální světlo"
 
 msgid "Windsock"
-msgstr "Větrný pytel"
+msgstr "Větrný rukáv"
 
 msgid "Terminal"
 msgstr "Terminál"
 
 msgctxt "airport"
 msgid "Gate"
-msgstr "Brána"
+msgstr "Gate"
 
 msgid "Facilities"
 msgstr "Zařízení"
@@ -21589,7 +21662,7 @@ msgid "scheme"
 msgstr "orientační"
 
 msgid "toposcope"
-msgstr "směrník"
+msgstr "toposkop"
 
 msgid "Shown Area"
 msgstr "Zobrazený areál"
@@ -21646,10 +21719,10 @@ msgid "wildlife"
 msgstr "informace o divokých zvířatech"
 
 msgid "plants"
-msgstr "rostliny"
+msgstr "informace o rostlinách"
 
 msgid "geology"
-msgstr "geologie"
+msgstr "informace o geologii"
 
 msgid "Guidepost"
 msgstr "Rozcestník"
@@ -21728,13 +21801,13 @@ msgid "Used for the water area only."
 msgstr "Používá se pouze pro vodní plochu."
 
 msgid "Fitness Station"
-msgstr "Fitness stanice"
+msgstr "Venkovní tělocvična"
 
 msgid "Sauna"
 msgstr "Sauna"
 
 msgid "Horse Riding"
-msgstr "Jízda na koni"
+msgstr "Jezdecký areál"
 
 msgid "Playground"
 msgstr "Hřiště"
@@ -21768,13 +21841,13 @@ msgid "Bird Hide"
 msgstr "Pozorovatelna ptactva"
 
 msgid "Night Club"
-msgstr "Noční klub"
+msgstr "Noční klub/diskotéka"
 
 msgid "Casino"
 msgstr "Kasino"
 
 msgid "Strip Club"
-msgstr "Strip klub"
+msgstr "Striptýzový klub"
 
 msgid "Brothel"
 msgstr "Nevěstinec"
@@ -21792,7 +21865,7 @@ msgid "Library"
 msgstr "Knihovna"
 
 msgid "Arts Centre"
-msgstr "Komunitní umělecké centrum"
+msgstr "Centrum umění"
 
 msgid "Artwork"
 msgstr "Umělecké dílo"
@@ -22025,7 +22098,7 @@ msgid "Kindergarten"
 msgstr "Mateřská škola"
 
 msgid "School"
-msgstr "Základní škola"
+msgstr "Základní/střední škola"
 
 msgid "University"
 msgstr "Vysoká škola"
@@ -22052,10 +22125,10 @@ msgid "Hospital"
 msgstr "Nemocnice"
 
 msgid "Clinic"
-msgstr "Klinika"
+msgstr "Poliklinika"
 
 msgid "Doctor''s Office"
-msgstr "Lékařská ambulance"
+msgstr "Lékařská ordinace"
 
 msgid "Dentist"
 msgstr "Zubař"
@@ -22094,7 +22167,7 @@ msgid "Ambulance Station"
 msgstr "Stanice záchranky"
 
 msgid "Automated Defibrillator"
-msgstr "Automatický defibrilátor"
+msgstr "Automatizovaný externí defibrilátor"
 
 msgid "Location description"
 msgstr "Popis umístění"
@@ -22137,7 +22210,7 @@ msgstr "zeď"
 
 msgctxt "pipeline"
 msgid "pond"
-msgstr "rybník"
+msgstr "nádrž"
 
 msgid "Diameter (in mm)"
 msgstr "Průměr (v mm)"
@@ -22147,11 +22220,11 @@ msgstr "Umístění hydrantu"
 
 msgctxt "hydrant position"
 msgid "lane"
-msgstr "ochranné okolí"
+msgstr "vyhrazené místo"
 
 msgctxt "hydrant position"
 msgid "parking_lot"
-msgstr "parkovací místo"
+msgstr "parkoviště"
 
 msgctxt "hydrant position"
 msgid "sidewalk"
@@ -22171,13 +22244,13 @@ msgid "Count"
 msgstr "Počet"
 
 msgid "Water Tank"
-msgstr "Nádrž na vodu"
+msgstr "Požární nádrž"
 
 msgid "Volume (in liters)"
 msgstr "Obsah (v litrech)"
 
 msgid "Assembly Point"
-msgstr "Shromáždiště"
+msgstr "Shromaždiště"
 
 msgid "Emergency Phone"
 msgstr "Nouzový telefon"
@@ -22306,7 +22379,7 @@ msgstr "zeď"
 
 msgctxt "post_box"
 msgid "meter"
-msgstr "měřič"
+msgstr "meter"
 
 msgid "Drive through"
 msgstr "Použitelná z auta (drive through)"
@@ -22325,7 +22398,7 @@ msgid "Telephone cards"
 msgstr "Telefonní karty"
 
 msgid "Internet Cafe"
-msgstr ""
+msgstr "Internetová kavárna"
 
 msgid "Internet Access"
 msgstr "Přístup k Internetu"
@@ -22361,10 +22434,10 @@ msgid "area (more than 20m)"
 msgstr "oblast (více než 20m)"
 
 msgid "Shows current date"
-msgstr "Zobrazuje datum"
+msgstr "Zobrazen datum"
 
 msgid "Shows temperature"
-msgstr "Zobrazuje teplotu"
+msgstr "Zobrazena teplota"
 
 msgid "Shows barometric pressure"
 msgstr "Zobrazen barometrický tlak"
@@ -22373,7 +22446,7 @@ msgid "Shows humidity"
 msgstr "Zobrazena vlhkost vzduchu"
 
 msgid "Photo booth"
-msgstr ""
+msgstr "Fotoautomat"
 
 msgid "Recycling Container"
 msgstr "Recyklační kontejner"
@@ -22463,26 +22536,26 @@ msgstr "z jedné strany otevřený přístřešek"
 
 msgctxt "shelter"
 msgid "picnic_shelter"
-msgstr "Přístřešek pro piknik"
+msgstr "přístřešek pro piknik"
 
 msgctxt "shelter"
 msgid "public_transport"
-msgstr "Přístřešek pro veřejnou dopravu"
+msgstr "přístřešek pro veřejnou dopravu"
 
 msgctxt "shelter"
 msgid "weather_shelter"
-msgstr "Skrýš před špatným počasím"
+msgstr "skrýš před špatným počasím"
 
 msgctxt "shelter"
 msgid "wildlife_hide"
-msgstr "Pozorovatelna divoké zvěře"
+msgstr "pozorovatelna divoké zvěře"
 
 msgid "Hunting Stand"
 msgstr "Posed"
 
 msgctxt "hunting stand"
 msgid "Hide"
-msgstr "Úkryt"
+msgstr "Kazatelna"
 
 msgid "Lockable"
 msgstr "Uzamykatelný"
@@ -22619,7 +22692,7 @@ msgstr "sportovní centrum"
 
 msgctxt "running"
 msgid "fitness_centre"
-msgstr "fitness_centrum"
+msgstr "fitness centrum"
 
 msgctxt "running"
 msgid "stadium"
@@ -22630,10 +22703,10 @@ msgid "track"
 msgstr "dráha"
 
 msgid "Nine-pin Bowling"
-msgstr "Devítikuželkový bowling"
+msgstr "Kuželky"
 
 msgid "Ten-pin Bowling"
-msgstr "Desetikuželkový bowling"
+msgstr "Bowling"
 
 msgid "Archery"
 msgstr "Lukostřelba"
@@ -22645,7 +22718,7 @@ msgid "Running"
 msgstr "Běh"
 
 msgid "Climbing"
-msgstr "Horolezení"
+msgstr "Horolezectví"
 
 msgid "Canoeing/Kayaking"
 msgstr "Kanoistika"
@@ -22667,10 +22740,10 @@ msgid "track"
 msgstr "dráha"
 
 msgid "Dog Racing"
-msgstr "Závody psů"
+msgstr "Chrtí dostihy"
 
 msgid "Equestrian"
-msgstr "Krasojízda"
+msgstr "Jezdectví"
 
 msgid "Horse Racing"
 msgstr "Dostihy"
@@ -22679,10 +22752,10 @@ msgid "Gymnastics"
 msgstr "Gymnastika"
 
 msgid "fitness_centre"
-msgstr "fitness_centrum"
+msgstr "fitness centrum"
 
 msgid "Ice Skating"
-msgstr "Brusklení na ledě"
+msgstr "Bruslení na ledě"
 
 msgid "ice_rink"
 msgstr "kluziště"
@@ -22691,7 +22764,7 @@ msgid "Roller Skating"
 msgstr "Bruslení na kolečkových bruslích"
 
 msgid "Skateboard"
-msgstr "Skateboard"
+msgstr "Skateboarding"
 
 msgid "Swimming"
 msgstr "Plavání"
@@ -22844,7 +22917,7 @@ msgid "Boule"
 msgstr "Hry s koulemi (pétanque)"
 
 msgid "Lawn Bowling"
-msgstr "Bowling na trávě"
+msgstr "Bowls"
 
 msgid "Cricket"
 msgstr "Kriket"
@@ -22859,10 +22932,10 @@ msgid "Ice Hockey"
 msgstr "Lední hokej"
 
 msgid "Pelota"
-msgstr "Pelota (míčová hra)"
+msgstr "Pelota (tlachtli)"
 
 msgid "Racquetball"
-msgstr "racquetbal (podobné jako squash, jiná pravidla)"
+msgstr "Raketbal"
 
 msgid "Table Tennis/Ping-Pong"
 msgstr "Stolní tenis/ping pong"
@@ -22966,7 +23039,7 @@ msgstr "univerzita"
 
 msgctxt "building"
 msgid "college"
-msgstr "vysoká škola"
+msgstr "vyšší odborná škola"
 
 msgctxt "building"
 msgid "hospital"
@@ -22994,7 +23067,7 @@ msgstr "kůlna"
 
 msgctxt "building"
 msgid "storage_tank"
-msgstr "uskladňovací nádrž"
+msgstr "skladovací tank"
 
 msgctxt "building"
 msgid "supermarket"
@@ -23177,7 +23250,7 @@ msgid "Silo"
 msgstr "Silo"
 
 msgid "Storage Tank"
-msgstr "Uskladňovací nádrž"
+msgstr "Skladovací tank"
 
 msgctxt "content"
 msgid "fuel"
@@ -23236,19 +23309,19 @@ msgid "Resource"
 msgstr "Surovina"
 
 msgid "aggregate"
-msgstr "agregát"
+msgstr "stavební kamenivo"
 
 msgid "bauxite"
 msgstr "bauxit"
 
 msgid "coal"
-msgstr "uhelná"
+msgstr "uhlí"
 
 msgid "copper"
 msgstr "měď"
 
 msgid "dimension_stone"
-msgstr "dekorační kameny"
+msgstr "kvádrový kámen"
 
 msgid "gold"
 msgstr "zlato"
@@ -23290,7 +23363,7 @@ msgid "Visible Headframe"
 msgstr "Viditelná těžní věž"
 
 msgid "Disused"
-msgstr "Nepoužívaný"
+msgstr "Nepoužívaná"
 
 msgid "Adit"
 msgstr "Štola"
@@ -23322,7 +23395,7 @@ msgid "Water Works"
 msgstr "Vodárna"
 
 msgid "Wastewater Treatment Plant"
-msgstr "Čistička odpadních vod"
+msgstr "Čistírna odpadních vod"
 
 msgid "Watermill"
 msgstr "Vodní mlýn"
@@ -23352,7 +23425,7 @@ msgid "Tide Level"
 msgstr "Výšku přílivu"
 
 msgid "Groundwater"
-msgstr "Podzemní voda"
+msgstr "Podzemní vodu"
 
 msgid "Traffic"
 msgstr "Dopravu"
@@ -23886,7 +23959,7 @@ msgid "industrial"
 msgstr "průmyslová"
 
 msgid "Power rating (kVA/MVA)"
-msgstr "nominální výkon (kVA/MVA)"
+msgstr "Nominální výkon (kVA/MVA)"
 
 msgid "2700 kVA"
 msgstr "2700 kVA"
@@ -24034,7 +24107,7 @@ msgid "Power Street Cabinet"
 msgstr "Skříň rozvodu elektřiny"
 
 msgid "Transformer Tower"
-msgstr "Budova trafostanice"
+msgstr "Trafostanice"
 
 msgid "Power Portal"
 msgstr "Portál el. vedení"
@@ -24046,7 +24119,7 @@ msgid "lattice"
 msgstr "mřížová"
 
 msgid "tubular"
-msgstr "trubicový"
+msgstr "trubicová"
 
 msgid "solid"
 msgstr "plná"
@@ -24217,7 +24290,7 @@ msgid "Incomplete tower"
 msgstr "Neúplný"
 
 msgid "Location transition"
-msgstr "Místo přechodu"
+msgstr "Místo přechodu vedení pod zem"
 
 msgid "Pole"
 msgstr "Sloup"
@@ -24302,19 +24375,19 @@ msgid "Castle"
 msgstr "Zámek/Hrad"
 
 msgid "stately"
-msgstr ""
+msgstr "zámek"
 
 msgid "defensive"
-msgstr ""
+msgstr "hrad"
 
 msgid "fortress"
-msgstr ""
+msgstr "pevnost"
 
 msgid "manor"
-msgstr ""
+msgstr "panské sídlo"
 
 msgid "palace"
-msgstr ""
+msgstr "palác"
 
 msgid "Archaeological Site"
 msgstr "Archeologické naleziště"
@@ -24372,7 +24445,7 @@ msgid "wayside_shrine"
 msgstr "boží muka"
 
 msgid "Boundary Stone"
-msgstr "Hraniční kameny"
+msgstr "Hraniční kámen"
 
 msgid "Shops"
 msgstr "Obchody"
@@ -24384,7 +24457,7 @@ msgid "Supermarket"
 msgstr "Supermarket"
 
 msgid "Convenience Store"
-msgstr "Samoobsluha, smíšenka, večerka"
+msgstr "Smíšené zboží"
 
 msgid "Kiosk"
 msgstr "Kiosek"
@@ -24417,19 +24490,19 @@ msgid "Coffee"
 msgstr "Káva"
 
 msgid "Public Market"
-msgstr "Veřejné tržiště"
+msgstr "Tržiště"
 
 msgid "Organic"
-msgstr "Obchod se zdravou výživou"
+msgstr "Bioprodukty"
 
 msgid "Greengrocer"
-msgstr "Zelinářství"
+msgstr "Ovoce a zelenina"
 
 msgid "Farm Stand"
 msgstr "Stánek farmy"
 
 msgid "Organic/Bio"
-msgstr "Bio produkty"
+msgstr "Bioprodukty"
 
 msgid "Fair Trade"
 msgstr "Fair Trade"
@@ -24459,7 +24532,7 @@ msgid "Tailor"
 msgstr "Krejčí"
 
 msgid "Fabric"
-msgstr "Látky (textil)"
+msgstr "Látky"
 
 msgid "Electronic"
 msgstr "Elektronika"
@@ -24477,7 +24550,7 @@ msgid "Vacuum Cleaner"
 msgstr "Vysavače"
 
 msgid "Hifi"
-msgstr "Hifi"
+msgstr "HiFi"
 
 msgid "Video"
 msgstr "Videopůjčovna/prodejna"
@@ -24489,7 +24562,7 @@ msgid "Music"
 msgstr "Hudba"
 
 msgid "Cash"
-msgstr "Finance"
+msgstr "Hotovost"
 
 msgid "Bank"
 msgstr "Banka"
@@ -24504,7 +24577,7 @@ msgid "Pawnbroker"
 msgstr "Zastavárna"
 
 msgid "Home decoration"
-msgstr "Domácí dekorace"
+msgstr "Vybavení domácnosti"
 
 msgid "Furniture"
 msgstr "Nábytek"
@@ -24603,7 +24676,7 @@ msgid "Department Store"
 msgstr "Obchodní dům"
 
 msgid "Mall"
-msgstr "Nákupní středisko"
+msgstr "Obchodní centrum"
 
 msgid "Florist"
 msgstr "Květinářství"
@@ -24618,7 +24691,7 @@ msgid "Hardware"
 msgstr "Železářství"
 
 msgid "Paint"
-msgstr "Malířské potřeby"
+msgstr "Barvy, laky"
 
 msgid "Travel Agency"
 msgstr "Cestovní kancelář"
@@ -24633,16 +24706,16 @@ msgid "Gift/Souvenir"
 msgstr "Dárky/Suvenýry"
 
 msgid "Variety Store"
-msgstr "Smíšené zboží"
+msgstr "Levné věci"
 
 msgid "Bookmaker"
-msgstr "Bookmaker"
+msgstr "Sázková kancelář"
 
 msgid "Lottery"
 msgstr "Loterie"
 
 msgid "Bag"
-msgstr "Kabelky"
+msgstr "Tašky a zavazadla"
 
 msgid "Pet"
 msgstr "Zverimex"
@@ -24672,7 +24745,7 @@ msgid "cigarettes"
 msgstr "cigarety"
 
 msgid "coffee"
-msgstr ""
+msgstr "káva"
 
 msgid "condoms"
 msgstr "kondomy"
@@ -24857,7 +24930,7 @@ msgstr "Vzdělávací instituce"
 
 msgctxt "office"
 msgid "Employment agency"
-msgstr "Agentura práce"
+msgstr "Pracovní agentura"
 
 msgctxt "office"
 msgid "Estate agent"
@@ -24869,7 +24942,7 @@ msgstr "Nadace"
 
 msgctxt "office"
 msgid "Government"
-msgstr "Vládní úřad/ministerstvo"
+msgstr "Státní/místní správa"
 
 msgid "ministry"
 msgstr "ministerstvo"
@@ -24958,7 +25031,7 @@ msgid "Gardener"
 msgstr "Zahradník"
 
 msgid "Winery"
-msgstr "Vinařský závod"
+msgstr "Vinařství"
 
 msgid "Hvac"
 msgstr "Topení, ventilace, klimatizace"
@@ -24970,7 +25043,7 @@ msgid "Stonemason"
 msgstr "Kameník"
 
 msgid "Handicraft"
-msgstr "Řemeslná výroba"
+msgstr "Umělecký řemeslník"
 
 msgid "Pottery"
 msgstr "Hrnčíř"
@@ -25018,7 +25091,7 @@ msgid "Maritime"
 msgstr "Námořní"
 
 msgid "Political"
-msgstr "Volební obvod"
+msgstr "Politická"
 
 msgid "Division"
 msgstr "Rozdělení"
@@ -25066,7 +25139,7 @@ msgid "Continent"
 msgstr "Kontinent"
 
 msgid "Country"
-msgstr "Stát"
+msgstr "Země"
 
 msgctxt "place"
 msgid "State"
@@ -25191,7 +25264,7 @@ msgid "Islet"
 msgstr "Ostrůvek"
 
 msgid "Reef"
-msgstr "Útes"
+msgstr "Podmořský útes"
 
 msgid "coral"
 msgstr "korálový"
@@ -25265,7 +25338,7 @@ msgid ""
 "woody) plants. Excludes cultivated areas and wetlands."
 msgstr ""
 "Vegetaci dominují trávy (Poaceae) a jiné nedřevnaté byliny. Nezahrnuje "
-"obhospodařovávané oblasti a mokřiny."
+"obhospodařované oblasti a mokřady."
 
 msgid "pampas"
 msgstr "pampa"
@@ -25295,7 +25368,7 @@ msgid "An accumulation of loose angular rocks."
 msgstr "Nahromadění volných hranatých kamenů."
 
 msgid "Shingle"
-msgstr "Oblázkový štěrk"
+msgstr "Oblázky"
 
 msgid "An accumulation of loose rounded rocks on a beach or riverbed."
 msgstr "Nahromadění volných oblázků na pláži či říčním korytě."
@@ -25364,7 +25437,7 @@ msgid ""
 "A single notable free-standing rock, which may differ from the composition "
 "of the terrain it lies in."
 msgstr ""
-"Osamělá výrazná Skála, která se může odlišovat od složení okolního terénu."
+"Osamělý výrazný kámen, který se může odlišovat od složení okolního terénu."
 
 msgid "Land use"
 msgstr "Využití krajiny"
@@ -25388,7 +25461,7 @@ msgstr "tráva"
 
 msgctxt "crop"
 msgid "rice"
-msgstr "rýře"
+msgstr "rýže"
 
 msgctxt "crop"
 msgid "wheat"
@@ -25456,7 +25529,7 @@ msgid "Greenhouse Horticulture"
 msgstr "Skleníkové zahradnictví"
 
 msgid "Plant Nursery"
-msgstr "Školka rostlin"
+msgstr "Pěstitelská školka"
 
 msgid "Aquaculture"
 msgstr "Akvakultura"
@@ -25477,10 +25550,10 @@ msgid "Grass"
 msgstr "Trávník"
 
 msgid "Village Green"
-msgstr "Náves"
+msgstr "Zeleň na návsi"
 
 msgid "Common"
-msgstr "Veřejná zeleň (mimo parky)"
+msgstr "Společný pozemek"
 
 msgid "Park"
 msgstr "Park"
@@ -25498,7 +25571,7 @@ msgid "Cemetery"
 msgstr "Hřbitov"
 
 msgid "Religious"
-msgstr "Náboženský"
+msgstr "Náboženské"
 
 msgid "Retail"
 msgstr "Obchody"
@@ -25525,7 +25598,7 @@ msgid "Brownfield"
 msgstr "Nedostatečně využívané zanedbané území (brownfield)"
 
 msgid "Greenfield"
-msgstr "Zastavitelné území (Greenfield)"
+msgstr "Zastavitelné území (greenfield)"
 
 msgid "Landfill"
 msgstr "Skládka odpadu"
@@ -25570,10 +25643,10 @@ msgid "Street name"
 msgstr "Jméno ulice"
 
 msgid "Place name"
-msgstr "Název místa"
+msgstr "Část obce"
 
 msgid "City name"
-msgstr "Jméno města"
+msgstr "Město"
 
 msgid "Post code"
 msgstr "Poštovní směrovací číslo"
@@ -25582,16 +25655,16 @@ msgid "Country code"
 msgstr "Kód země"
 
 msgid "Unit/Suite"
-msgstr "Jednotka/Apartmá"
+msgstr "Jednotka/apartmá"
 
 msgid "House name"
 msgstr "Jméno domu"
 
 msgid "Subdistrict"
-msgstr "Podokres (subdistrict)"
+msgstr "Poddistrikt"
 
 msgid "District"
-msgstr "District"
+msgstr "Distrikt"
 
 msgid "Province"
 msgstr "Provincie"
@@ -25818,7 +25891,7 @@ msgstr ""
 
 msgctxt "note=*, fixme=*, description=*"
 msgid "Similar but different tags:"
-msgstr "Podobné ale jiné značky:"
+msgstr "Podobné, ale jiné značky:"
 
 msgctxt "the tag note=*"
 msgid "Note"
@@ -25939,16 +26012,16 @@ msgid "Type of enforcement"
 msgstr "Typ omezení"
 
 msgid "maxheight"
-msgstr "max výška"
+msgstr "max. výška"
 
 msgid "maxweight"
-msgstr "max hmotnost"
+msgstr "max. hmotnost"
 
 msgid "maxspeed"
 msgstr "max. rychlost"
 
 msgid "mindistance"
-msgstr "min vzdálenost"
+msgstr "min. vzdálenost mezi vozidly"
 
 msgid "check"
 msgstr "kontrola"
@@ -26155,13 +26228,13 @@ msgid "way forming the outline footprint"
 msgstr "cesta popisující okraj půdorysu"
 
 msgid "edge ways parallel to ''across''"
-msgstr "hraniční cesty ve směru \"napříč\""
+msgstr "okraje mostu v jeho směru"
 
 msgid "ways passing through the tunnel"
 msgstr "cesty procházející tunelem"
 
 msgid "edge ways parallel to ''through''"
-msgstr "hraniční cesty ve směru \"skrz\""
+msgstr "okrajové testy ve směru tunelu"
 
 msgid "Tunnel Start"
 msgstr "Začátek tunelu"
@@ -26188,97 +26261,97 @@ msgid "Test"
 msgstr "Test"
 
 msgid "View website"
-msgstr ""
+msgstr "Zobrazit webovou stránku"
 
 msgid "View URL"
-msgstr ""
+msgstr "Zobrazt URL"
 
 msgid "Send Email"
-msgstr ""
+msgstr "Poslat e-mail"
 
 msgid "View image"
-msgstr ""
+msgstr "Zobrazit obrázek"
 
 msgid "View %name% article"
-msgstr ""
+msgstr "Zobrazit %name% článek"
 
 msgid "View Wikidata page"
-msgstr ""
+msgstr "Zobrazit stránku Wikidat"
 
 msgid "View UNESCO sheet"
-msgstr ""
+msgstr "Zobrazit list UNESCO"
 
 msgid "View %name% image"
-msgstr ""
+msgstr "Zobrazit %name% obrázek"
 
 msgid "View %name% sheet of river"
-msgstr ""
+msgstr "Zobrazit %name% list řeky"
 
 msgid "View %name% municipality sheet"
-msgstr ""
+msgstr "Zobrazit %name% list samosprávy"
 
 msgid "View %name% sheet on osm.fr"
-msgstr ""
+msgstr "Zobrazit %name% list na osm.fr"
 
 msgid "View %name% map of municipalities"
-msgstr ""
+msgstr "Zobrazit %name% mapu samospráv"
 
 msgid "View %name% list of municipalities"
-msgstr ""
+msgstr "Zobrazit %name% seznam samospráv"
 
 msgid "View %name% map of cantons"
-msgstr ""
+msgstr "Zobrazit %name% mapu kantonů"
 
 msgid "View %name% list of cantons"
-msgstr ""
+msgstr "Zobrazit %name% seznam kantonů"
 
 msgid "View %name% map of arrondissements"
-msgstr ""
+msgstr "Zobrazit %name% mapu arrondissementů"
 
 msgid "View %name% list of arrondissements"
-msgstr ""
+msgstr "Zobrazit %name% seznam arrondissementů"
 
 msgid "View %name% map of departments"
-msgstr ""
+msgstr "Zobrazit %name% mapu departementů"
 
 msgid "View %name% list of departments"
-msgstr ""
+msgstr "Zobrazit %name% seznam departementů"
 
 msgid "View %name% map of regions"
-msgstr ""
+msgstr "Zobrazit %name% mapu regionů"
 
 msgid "View %name% list of regions"
-msgstr ""
+msgstr "Zobrazit %name% seznam regionů"
 
 msgid "View %name% sheet of church"
-msgstr ""
+msgstr "Zobrazit %name% list kostela"
 
 msgid "View Mérimée sheet of monument"
-msgstr ""
+msgstr "Zobrazit list Mérimée monumentu"
 
 msgid "View Mérimée list for this municipality"
-msgstr ""
+msgstr "Zobrazit list Mérimée této samosprávy"
 
 msgid "View %name% sheet of geodesic site"
-msgstr ""
+msgstr "Zobrazit %name% list geodetického místa"
 
 msgid "View UAI sheet of school/college"
-msgstr ""
+msgstr "Zobrazit list UAI školy"
 
 msgid "View %name% sheet of hospital/home"
-msgstr ""
+msgstr "Zobrazit %name% list nemocnice/domova"
 
 msgid "View explanation of %name% code"
-msgstr ""
+msgstr "Zobrazit vysvětlení kódu %name%"
 
 msgid "Get identification card (pdf) for this establishment"
-msgstr ""
+msgstr "Získat identifikační kartu (pdf) tohoto zařízení"
 
 msgid "View %name% page of this post office"
-msgstr ""
+msgstr "Zobrazit %name% stránku této pošty"
 
 msgid "View %name% sheet of memorial"
-msgstr ""
+msgstr "Zobrazit %name% list památníku"
 
 msgid "Even housenumber in odd address interpolation."
 msgstr "Sudé číslo domu v interpolaci lichých adres."
@@ -26583,6 +26656,9 @@ msgstr ""
 "{0} je značka používaná pro vodní toky. Pro označení plochy použijte spíše "
 "{1} + {2}."
 
+msgid "node connects highway and building"
+msgstr "uzel spojuje silnici s budovou"
+
 msgid "abbreviated street name"
 msgstr "zkrácený název ulice"
 
@@ -26725,20 +26801,66 @@ msgid "Nodes duplicating parent way tags"
 msgstr "Uzly duplikující značky cesty, jejíž jsou součástí"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
-"nebyl určen žádný jazyk Wikipedie, použijte tvar ''wikipedia''=''jazyk:název "
-"stránky''"
+"Značka wikipedia nemá zadaný žádný jazyk. "
+"Použijte''wikipedia''=''jazyk:název stránky''"
 
-msgid "unknown language prefix in wikipedia tag"
-msgstr "neznámý prefix jazyka ve značce ''wikipedia''"
+msgid "wikipedia tag has an unknown language prefix"
+msgstr "Značka wikipedia má neznámou předponu jazyka."
 
-msgid "deprecated format for wikipedia tag"
-msgstr "zastaralý formát značky wikipedia"
+msgid "wikipedia tag format is deprecated"
+msgstr "Formát značky wikipedia je zastararlý."
 
 msgid "''wikipedia''=''language:page title''"
 msgstr "''wikipedia''=''jazyk:název stránky''"
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr "Jazyk Wikipedie ''{0}'' je zastaralý. Použijte radši ''{1}''."
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr "Jazyk Wikipedie ''{0}'' je neplatný. Použijte radši ''{1}''."
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+"Značka {0} by neměla obsahovat hodnoty s zakódovaným URL, jako třeba ''%27''."
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr "Název stránky Wikipedie by za kódem jazyka neměl začínat mezerou."
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr "Název stránky Wikipedie by neměl mít předponu ''{0}''."
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr "Název stránky Wikipedie by měl mít první písmeno velké."
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+"Název stránky Wikipedie by měl obsahovat mezery a nikoliv podtržítka "
+"(''_''→'' '')."
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr "Jazyk Wikipedie je asi zdvojený, např. cs:cs:Něco"
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr "Značka wikidata musí být ve tvaru Qnnnn, kde n je číslice."
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+"Značka wikipedia je přidána, ale není přidána žádná značka wikidata. Doplněk "
+"Wikipedia vám může pomoci s vyhledáním identifikátorů wikidata."
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+"Značka wikipedia není přidána, ale je přidána značka ''{0}''. Ujistěte se, "
+"že spolu se značkou wikidata používáte značku wikipedia=jazyk:stránka"
+
 msgid "Hide icons at low zoom"
 msgstr "Skrýt ikony v malém přiblížení"
 
@@ -26948,7 +27070,7 @@ msgid "Selected track: {0}"
 msgstr "Zvolená trasa: {0}"
 
 msgid "No GPX layer selected. Cannot upload a trace."
-msgstr "Není vybrána GPX vrstva. Nelze nahrát trasu na server."
+msgstr "Není vybrána žádná vrstva GPX. Trasu nelze nahrát na server."
 
 msgid "Uploading trace ..."
 msgstr "Nahrávám trasu ..."
@@ -27366,11 +27488,11 @@ msgstr "Celkem obrázků:"
 msgid "images"
 msgstr "obrázků"
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
-msgstr "Písmo dopravní značky na ''{0}'' má špatný formát"
+msgid "Mapillary object layer"
+msgstr "Vrstva objektů Mapillary"
 
-msgid "Could not read font-file from ''{0}''"
-msgstr "Nemohu načíst soubor písma z ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
+msgstr "Zobrazí vrstvu, ve které jsou mapové objekty detekované Mapillary"
 
 msgid "Mapillary"
 msgstr "Mapillary"
@@ -27417,9 +27539,6 @@ msgstr "Režim slučování"
 msgid "Join/unjoin pictures"
 msgstr "Sloučit/rozdělit obrázky"
 
-msgid "Join Mapillary pictures"
-msgstr "Sloučit obrázky Mapillary"
-
 msgid "Submit changeset"
 msgstr "Odeslat sadu změn"
 
@@ -27455,9 +27574,6 @@ msgstr "Nahrát obrázky na server."
 msgid "Walk mode"
 msgstr "Režim chůze"
 
-msgid "Start walk mode"
-msgstr "Spustit režim chůze"
-
 msgid "Zoom to selected image"
 msgstr "Zvětšit na zvolený obrázek"
 
@@ -27563,18 +27679,18 @@ msgstr "Historie Mapillary"
 msgid "Open Mapillary history dialog"
 msgstr "Otevřít dialog historie Mapillary"
 
+msgid "No image selected"
+msgstr "Nebyl vybrán žádný obrázek"
+
+msgid "Press \"{0}\" to download images"
+msgstr "Stiskněte \"{0}\" pro stažení obrázků"
+
 msgid "Mapillary picture"
 msgstr "Obrázek Mapillary"
 
 msgid "Open Mapillary window"
 msgstr "Otevřít okno Mapillary"
 
-msgid "Mapillary dialog"
-msgstr "Dialog Mapillary"
-
-msgid "Open Mapillary main dialog"
-msgstr "Otevřít hlavní dialog Mapillary"
-
 msgid "Next picture"
 msgstr "Další obrázek"
 
@@ -27626,6 +27742,9 @@ msgstr "Přesunout se na umístění obrázku tlačítky další/předchozí"
 msgid "Preview images when hovering its icon"
 msgstr "Nahlédnout obrázek při ukázání na jeho ikonu"
 
+msgid "Cut off sequences at download bounds"
+msgstr "Useknout sekvence na hranicích stahování"
+
 msgid "Download mode"
 msgstr "Režim stahování"
 
@@ -27701,6 +27820,12 @@ msgstr "Informace o obrázku"
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr "Zobrazí podrobné informace o aktuálně zvoleném obrázku Mapillary."
 
+msgid "View in browser"
+msgstr "Zobrazit v prohlížeči"
+
+msgid "Copy key"
+msgstr "Kopírovat klíč"
+
 msgid "Add Mapillary tag"
 msgstr "Přidat značku Mapillary"
 
@@ -27722,6 +27847,12 @@ msgstr "sekvence nemá žádný klíč"
 msgid "Could not open the URL {0} in a browser"
 msgstr "Nemohu otevřít URL {0} v prohlížeči"
 
+msgid "Mapillary objects"
+msgstr "Objekty Mapillary"
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr "Zobrazí objekty detekované Mapillary z jejich fotografií ulic"
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] "Smazán {0} obrázek"
@@ -27752,6 +27883,9 @@ msgstr[2] "Otočeno {0} obrázků"
 msgid "2 images unjoined"
 msgstr "2 obrázky rozděleny"
 
+msgid "Could not read map objects from URL {0}!"
+msgstr "Nelza načít objekty mapy z URL {0}!"
+
 msgid "everything in the visible area"
 msgstr "vše ve viditelné oblasti"
 
@@ -27768,6 +27902,9 @@ msgstr ""
 "Stažená plocha OSM je příliš velká. Režim stahování byl změněn na plochu OSM "
 "do doby, než bude vrstva restartována."
 
+msgid "Could not read sequences from URL {0}!"
+msgstr "Nemohu načíst sekvence z URL {0}!"
+
 msgid "Downloading"
 msgstr "Stahuji"
 
@@ -27810,18 +27947,6 @@ msgstr "Nepřihlášeno k Mapillary"
 msgid "Uploading: {0}"
 msgstr "Nahrávám na server: {0}"
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr "Klíč obrázku ''{0}'' je neplatný!"
-
-msgid "The image key must not be null here!"
-msgstr "Klíč obrázku zde nesmí být prázdný!"
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr "Sekvenční klíč ''{0}'' je neplatný!"
-
-msgid "The sequence key must not be null here!"
-msgstr "Sekvenční klíč zde nesmí být prázdný!"
-
 msgid "NanoLog"
 msgstr "NanoLog"
 
@@ -28170,7 +28295,7 @@ msgid "Align Ways mode"
 msgstr "Režim zarovnání cest"
 
 msgid "Parameter ''{0}'' must not be null"
-msgstr "Parametr ''{0}'' nesmí být null"
+msgstr "Parametr ''{0}'' nesmí být prázdný"
 
 msgid ""
 "Segment to be aligned cannot be the same with the reference segment.\n"
@@ -28422,6 +28547,9 @@ msgstr "Budova:"
 msgid "Tags:"
 msgstr "Štítky:"
 
+msgid "Source:"
+msgstr "Zdroj:"
+
 msgid "Name:"
 msgstr "Název:"
 
@@ -28455,6 +28583,12 @@ msgstr "Zkouším najít plochu na:"
 msgid "Created area"
 msgstr "Vytvořená plocha"
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] "Přidat adresu"
+msgstr[1] "Přidat adresy"
+msgstr[2] "Přidat adres"
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr "V místě vašeho kliknutí nenacházím polygon"
 
@@ -28555,12 +28689,41 @@ msgstr "sloučit uzly"
 msgid "Merge nodes with existing nodes"
 msgstr "Sloučit uzly s existujícími uzly"
 
+msgid "use austria address helper"
+msgstr "použít pomocníka pro rakouské adresy"
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+"Pokusí se automaticky najít správnou adresu pomocí doplňku Austria Address "
+"Helper plugin"
+
 msgid "Debug"
 msgstr "Ladění"
 
 msgid "Debugging mode will write images for each processing step."
 msgstr "Režim ladění zapíše obrázky v každém kroku zpracování."
 
+msgid "Fetch Address"
+msgstr "Načíst adresu"
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+"Pomocník s rakouskými adresami<br>Zvolte, prosím, právě jeden objekt."
+
+msgid "Austria Address Helper"
+msgstr "Pomocník s rakouskými adresami"
+
+msgid "Successfully added address to selected object:"
+msgstr "Úspěšně přidána adresa k vybranému objektu:"
+
+msgid "No address was found for this object."
+msgstr "Pro tento objekt nebyla nalezena žádná adresa."
+
+msgid "An unexpected exception occurred:"
+msgstr "Došlo k neočekávané výjimce:"
+
 msgid "Building Generalization"
 msgstr "Zobecnění budov"
 
@@ -28665,9 +28828,6 @@ msgstr "Nebyly nalezeny žádné uzly adres uvnitř budov"
 msgid "on polygon"
 msgstr "na polygonu"
 
-msgid "Add address"
-msgstr "Přidat adresu"
-
 msgid "Helping tool for tag address"
 msgstr "Pomocný nástroj na značení adres"
 
@@ -28928,7 +29088,7 @@ msgid "Fixed size square (default is 100m)"
 msgstr "Fixní velikost čtverce (výchozí je 100m)"
 
 msgid "Fixed size (from 25 to 1000 meters)"
-msgstr "Fixní velikost (od 25 do 1000 metrů)"
+msgstr "Pevná velikost (od 25 do 1 000 metrů)"
 
 msgid "Layers:"
 msgstr "Vrstvy:"
@@ -29071,7 +29231,7 @@ msgid "Georeference an image"
 msgstr "Přiřazení souřadnic obrázku"
 
 msgid "Grab non-georeferenced image"
-msgstr "Zachycený obrázek bez zeměpisných souřadnic"
+msgstr "Zachytit obrázek bez zeměpisných souřadnic"
 
 msgid "Georeferencing interrupted"
 msgstr "Zjišťování zeměpisných souřadnic přerušeno"
@@ -29217,8 +29377,7 @@ msgstr "Klikněte na druhý roh pro oříznutí obrázku"
 
 msgid "Click second Lambert crosspiece for georeferencing"
 msgstr ""
-"Zvolte druhý Lambertův příčník(crosspiece) pro určení zeměpisné polohy "
-"(georeferencing)"
+"Zvolte druhý Lambertův příčník (crosspiece) pro určení zeměpisné polohy"
 
 msgid "Adjust WMS"
 msgstr "Upravit WMS"
@@ -29305,15 +29464,6 @@ msgstr "Smazat vybrané schéma ze seznamu."
 msgid "Color Schemes"
 msgstr "Schémata barev"
 
-msgid "Conflate object pair"
-msgstr "Sloučit dva objekty"
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] "Přidán {0} objekt do cílové vrstvy"
-msgstr[1] "Přidány {0} objekty do cílové vrstvy"
-msgstr[2] "Přidáno {0} objektů do cílové vrstvy"
-
 msgid "Conflation"
 msgstr "Sloučení"
 
@@ -29344,15 +29494,12 @@ msgstr "Nastavit"
 msgid "Configure conflation options"
 msgstr "Nastavit možnosti sloučení"
 
-msgid "Delete {0} conflation matches"
-msgstr "Smazat {0} shod sloučení"
-
-msgid "Remove {0} unmatched objects"
-msgstr "Odstranit {0} neshodných objektů"
-
 msgid "Remove selected matches"
 msgstr "Odebrat vybrané shody"
 
+msgid "Remove ({0})"
+msgstr "Odstranit ({0})"
+
 msgid "Conflate"
 msgstr "Sloučit"
 
@@ -29362,35 +29509,153 @@ msgstr "Sloučit vybrané objekty"
 msgid "Conflation: {0}"
 msgstr "Sloučení: {0}"
 
-msgid "Cannot replace geometry."
-msgstr "Nelze nahradit geometrii"
+msgid "Conflate {0} objects"
+msgstr "Sloučit {0} objekty"
+
+msgid "Conflate ({0})"
+msgstr "Sloučit ({0})"
 
 msgid "Zoom to selected primitive(s)"
-msgstr "Přiblížit na vybraný prvek"
+msgstr "Přiblížit na vybraný prvek/prvky"
 
 msgid "Select selected primitive(s)"
-msgstr "Vybrat vybraný prvek"
+msgstr "Vybrat vybraný prvek/prvky"
 
 msgid "Select the primitives currently selected in the list"
 msgstr "Vybrat prvky, které jsou v seznamu právě vybrané"
 
-msgid "Match finder settings"
-msgstr "Nastavení hledání shod"
+msgid "Generating matches"
+msgstr "Vytváření shod"
 
-msgid "Match finder method"
-msgstr "Způsob hledání shod"
+msgid "Finding matches"
+msgstr "Hledání shod"
 
-msgid "Threshold distance"
-msgstr "Práh vzdálenosti"
+msgid "Sorting scores"
+msgstr "Třídění skóre"
 
-msgid "Distances greater than this will result in a score of zero."
-msgstr "Vzdálenost větší než tato bude vyhodnocena s nulovým skóre"
+msgid "Discarding inferior matches"
+msgstr "Zahazování podřadných shod"
+
+msgid "Subject"
+msgstr "Cíl"
 
-msgid "Centroid distance"
-msgstr "Vzdálenost centroidu"
+msgid "Conflate object pair"
+msgstr "Sloučit dva objekty"
 
-msgid "Hausdorff distance"
-msgstr "Hausdorffova vzdálenost"
+msgid "Cannot replace geometry."
+msgstr "Nelze nahradit geometrii"
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] "Přidán {0} objekt do cílové vrstvy"
+msgstr[1] "Přidány {0} objekty do cílové vrstvy"
+msgstr[2] "Přidáno {0} objektů do cílové vrstvy"
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] "Přesunuta {0} shoda sloučení do seznamu neshodných"
+msgstr[1] "Přesunuty {0} shody sloučení do seznamu neshodných"
+msgstr[2] "Přesunuto {0} shod sloučení do seznamu neshodných"
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] "Vymazat {0} shodu spojování"
+msgstr[1] "Vymazat {0} shody spojování"
+msgstr[2] "Vymazat {0} shod spojování"
+
+msgid "Remove {0} unmatched objects"
+msgstr "Odstranit {0} neshodných objektů"
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr "Přerušená posloupnost ({0}/{1}): {2}"
+
+msgid " Max: "
+msgstr " Max: "
+
+msgid "Filter by area. Min: "
+msgstr "Filtrovat dle plochy. Min: "
+
+msgid "Filter by window. Buffer: "
+msgstr "Filtrovat podle okna. Zásobník: "
+
+msgid "Union up to "
+msgstr "Spojení až do "
+
+msgid " adjacent Reference features"
+msgstr " sousedících referenčních prvků"
+
+msgid "Weight"
+msgstr "Váha"
+
+msgid "Standard Distance"
+msgstr "Standardní vzdálenost"
+
+msgid "below"
+msgstr "pod"
+
+msgid "Maximum Distance"
+msgstr "Maximální vzdálenost"
+
+msgid "Centroid Distance"
+msgstr "Vzdálenost těžišť"
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr "Hausdorffova vzdálenost (zarovnaná těžiště)"
+
+msgid "Symmetric Difference"
+msgstr "Symetrický rozdíl"
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr "Symetrický rozdíl (zarovnaná těžiště)"
+
+msgid "Compactness"
+msgstr "Kompaktnost"
+
+msgid "Angle Histogram. Bins: "
+msgstr "Přihrádky histogramu úhlů: "
+
+msgid "Tags (Exact Match): "
+msgstr "Značky (přesná shoda): "
+
+msgid "Tags (Levenshtein Distance): "
+msgstr "Značky (Levenštejnova vzdálenost): "
+
+msgid "List of tags to match"
+msgstr "Seznam značek k párování"
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+"Filtrování urychlí proces přiřazování párování. Filtrovat podle okna "
+"odplevelí shody mezi prvky, jejichž obálky se nepřekrývají. Filtrovat podle "
+"plochy se používá k odplevelení velmi malých a velmi velkých prvků."
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
+"Lze nalézt lepší shody vytvořením dočasných spojení prvků, které sdílí "
+"společnou hranu."
+
+msgid "Matching"
+msgstr "Párování"
+
+msgid "Filtering"
+msgstr "Filtrování"
+
+msgid "Unioning"
+msgstr "Spojování"
+
+msgid "Simple Example"
+msgstr "Jednoduchý příklad"
+
+msgid "Advanced Example"
+msgstr "Pokročilý příklad"
+
+msgid "<Please select data>"
+msgstr "<Zvolte, prosím, data>"
 
 msgid "Configure conflation settings"
 msgstr "Nastavení slučování"
@@ -29398,14 +29663,32 @@ msgstr "Nastavení slučování"
 msgid "Generate matches"
 msgstr "Vytvořit shody"
 
-msgid "Layer:"
-msgstr "Vrstva:"
+msgid "Reference:"
+msgstr "Referenční:"
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
-msgstr "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
+msgstr "Subjekt:"
 
-msgid "Subject"
-msgstr "Cíl"
+msgid "Programming"
+msgstr "Programování"
+
+msgid "Merging"
+msgstr "Slučuje se"
+
+msgid "Replace Geometry"
+msgstr "Nahradit geometrii"
+
+msgid "Merge Tags"
+msgstr "Sloučit značky"
+
+msgid "List of tags to merge"
+msgstr "Seznam značek ke sloučení"
+
+msgid "Overwrite tags without confirmation"
+msgstr "Přepsat značky bez potvrzení"
+
+msgid "List of tags to overwrite without confirmation"
+msgstr "Seznam značek, které se mají přepsat bez potvrzení"
 
 msgid "Selections must be made for both reference and subject."
 msgstr "Musíte vybrat obojí cíl i referenci."
@@ -29437,11 +29720,26 @@ msgstr "Prázdný výběr"
 msgid "Freeze reference selection"
 msgstr "Zmrazit referenční výběr"
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
-msgstr "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr "Rozlišování"
+
+msgid "One to One"
+msgstr "Jeden k jednomu"
+
+msgid "Distance"
+msgstr "Vzdálenost"
 
-msgid "Invalid reference or subject"
-msgstr "Nepoužitelná reference nebo cíl"
+msgid "Standard"
+msgstr "Standard"
+
+msgid "Centroid"
+msgstr "Těžiště"
+
+msgid "Hausdorff"
+msgstr "Hausdorff"
+
+msgid "List of tags to match (default: none)"
+msgstr "Seznam značek pro spárování (výchozí: žádná)"
 
 msgid "Download OSM data continuously"
 msgstr "Stahovat OSM data kontinuálně"
@@ -29840,7 +30138,7 @@ msgid "GPX Data"
 msgstr "GPX data"
 
 msgid "Classes element below root child level"
-msgstr "Prvek třídy pod úrovní potomka kořenového prvku"
+msgstr "Prvek tříd pod úrovní potomka kořenového prvku"
 
 msgid "Class element ({0}) outside classes element"
 msgstr "Prvek třídy ({0}) mimo prvky tříd"
@@ -29864,7 +30162,7 @@ msgid "Closed classes while it was not open"
 msgstr "Uzavření třídy, která nebyla otevřená"
 
 msgid "Closed classes element before all class elements were closed"
-msgstr "Uzavřený prvek třídy před tím, než byly všechny prvky třídy uzavřeny"
+msgstr "Prvek uzavřených tříd před tím, než byly všechny prvky tříd uzavřeny"
 
 msgid "Closed class element while none was open"
 msgstr "Uzavření prvku třídy, který nebyl otevřený"
@@ -30369,9 +30667,9 @@ msgid ""
 "OSM data in the area. Please check that the offset is still valid\n"
 "by downloading GPS tracks and comparing them and OSM data to the imagery."
 msgstr ""
-"Vrchní vrstva podkladových leteckých snímků byla pravděpodobně posunuta,\n"
-"aby seděla na OSM data v oblasti. Zkontrolujte prosím, zda je posunutí stále "
-"správné,\n"
+"Vrchní vrstva mapových podkladů byla posunuta, aby seděla na OSM data v "
+"oblasti.\n"
+"Zkontrolujte, prosím, zda je posunutí stále správné,\n"
 "tak že stáhnete trasy GPS a porovnáte je a data OSM s podkladovými snímky."
 
 msgid ""
@@ -30550,6 +30848,33 @@ msgstr "Import vektorové kresby"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "SVG soubory [doplněk ImportVec] (*.svg)"
 
+msgid "Improve Way"
+msgstr "Zpřesnit cestu"
+
+msgid "Improve Way mode"
+msgstr "Režim zpřesňování cesty"
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr "Režim: Povolit pomocníky zpřesňování cesty"
+
+msgid "improve way accuracy helper turn angle text"
+msgstr "pomocník zpřesňování cesty text otočení úhlu"
+
+msgid "improve way accuracy helper distance text"
+msgstr "pomocník zpřesňování cesty text vzdálenost"
+
+msgid "improve way accuracy helper arc fill"
+msgstr "pomocník zpřesňování cesty výplň úhlu"
+
+msgid "improve way accuracy helper arc stroke"
+msgstr "pomocník zpřesňování cesty linie úhlu"
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr "pomocník zpřesňování cesty kolmá čára"
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr "pomocník zpřesňování cesty kružnice shodného úhlu"
+
 msgid "Concourse wizard ..."
 msgstr "Pomocník pro chodby..."
 
@@ -30575,16 +30900,16 @@ msgid "Activates the plug-in"
 msgstr "Aktivuje doplněk"
 
 msgid "Working Level"
-msgstr "Pracovní úroveň"
+msgstr "Pracovní patro"
 
 msgid "Selects the working level."
-msgstr "Zvolí pracovní úroveň"
+msgstr "Zvolí pracovní patro."
 
 msgid "Level Name"
-msgstr "Název úrovně"
+msgstr "Název patra"
 
 msgid "Optional name-tag for a level."
-msgstr "Volitelná značka názvu úrovně."
+msgstr "Volitelná značka názvu patra."
 
 msgid "The object preset you want to tag."
 msgstr "Předvolba objektu, který chcete označit."
@@ -30611,19 +30936,19 @@ msgstr ""
 "správce doplňků JOSM.</html>"
 
 msgid "Level Selection"
-msgstr "Výběr úrovně"
+msgstr "Výběr patra"
 
 msgid "Lowest Level"
-msgstr "Nejnižší úroveň"
+msgstr "Nejnižší patro"
 
 msgid "The lowest level of your building."
-msgstr "Nejnižší úroveň vaší budovy."
+msgstr "Nejnižší patro vaší budovy."
 
 msgid "Highest Level"
-msgstr "Nejvyšší úroveň"
+msgstr "Nejvyšší patro"
 
 msgid "The highest level of your building."
-msgstr "Nejvyšší úroveň vaší budovy."
+msgstr "Nejvyšší patro vaší budovy."
 
 msgid "Toolbox for indoor mapping assistance"
 msgstr "Panel nástrojů pro mapování vnitřních prostor"
@@ -30816,9 +31141,6 @@ msgstr "Nahradit cestu"
 msgid "Replace way of selected way with a new way"
 msgstr "Nahradit vybranou cestu novou cestou"
 
-msgid "Replace Geometry"
-msgstr "Nahradit geometrii"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -30991,7 +31313,7 @@ msgid "Offset all points in North direction (degrees). Default 0."
 msgstr "Posun všech bodů severním směrem (stupňů). Výchozí hodnota 0."
 
 msgid "Direction to search for land. Default east."
-msgstr "Směr hledání země. Standardně východ."
+msgstr "Směr hledání země. Výchozí je na východ."
 
 msgid "Tag ways as water, coastline, land or nothing. Default is water."
 msgstr ""
@@ -32148,9 +32470,6 @@ msgstr "Upravit údaje GPS fotografie"
 msgid "Please select an image first."
 msgstr "Nejdříve vyberte obrázek."
 
-msgid "No image selected"
-msgstr "Nebyl vybrán žádný obrázek"
-
 msgid "(Empty values delete the according fields.)"
 msgstr "(Prázdné hodnoty vymažou odpovídající pole.)"
 
@@ -32224,7 +32543,7 @@ msgid "Problem occurred"
 msgstr "Nastal problém"
 
 msgid "Import World File Calibration..."
-msgstr ""
+msgstr "Importovat kalibraci World File..."
 
 msgid "Loads calibration data from a world file"
 msgstr "Načíst kalibrační data se souboru World File"
@@ -32248,10 +32567,10 @@ msgid "Saving file failed: {0}"
 msgstr "Uložení souboru selhalo: {0}"
 
 msgid "Export World file Calibration..."
-msgstr ""
+msgstr "Exportovat kalibraci World File..."
 
 msgid "Saves calibration data to a world file"
-msgstr ""
+msgstr "Uložit kalibrační data do World File"
 
 msgid "New picture layer from clipboard"
 msgstr "Nová vrstva s obrázkem ze schránky"
@@ -32743,7 +33062,7 @@ msgid "Id"
 msgstr "Id"
 
 msgid "State"
-msgstr "Země"
+msgstr "Stav"
 
 msgid "pending"
 msgstr "čekající"
@@ -32981,7 +33300,7 @@ msgid "Move tags from ways to relation"
 msgstr "Přesunout značky z cest na relaci"
 
 msgid "Enter admin level and name for the border relation:"
-msgstr "Zadejte administrativní úroveň level a název pro relaci hranice:"
+msgstr "Zadejte administrativní úroveň a název relace hranice:"
 
 msgid "Admin level"
 msgstr "Administrativní úroveň"
@@ -33092,7 +33411,7 @@ msgid "Revert"
 msgstr "Vrátit zpět"
 
 msgid "Enter the ID of the changeset that should be reverted"
-msgstr "Zadejte id sady změn, kterou chcete vrátit zpět"
+msgstr "Zadejte id sady změn, kterou chcete vrátit zpět."
 
 msgid "Reverted changeset"
 msgstr "Vrácená sada změn"
@@ -33160,6 +33479,12 @@ msgstr ""
 "Upozornění: Nepodporovaný koncový prvek ''{0}'' v obsahu sady změn na pozici "
 "({1},{2}). Přeskakuji."
 
+msgid "Create Roundabout"
+msgstr "Vytvořit kruhový objezd"
+
+msgid "Roundabout Expander"
+msgstr "Rozšiřování kruhových objezdů"
+
 msgid "Road Sign Plugin"
 msgstr "Doplněk Road Sign"
 
@@ -33284,14 +33609,11 @@ msgid "Routing Plugin Preferences"
 msgstr "Nastavení doplňku Routing"
 
 msgid "Configure routing preferences."
-msgstr "Nastavení předvoleb směrování"
+msgstr "Nastavení předvoleb navigace"
 
 msgid "Speed (Km/h)"
 msgstr "Rychlost (km/h)"
 
-msgid "Weight"
-msgstr "Váha"
-
 msgid "Enter weight values"
 msgstr "Zadejte jednotky váhy"
 
@@ -33988,7 +34310,7 @@ msgid "No set of parameter is active!"
 msgstr "Není aktivní žádná sada parametrů!"
 
 msgid "Select parameter"
-msgstr "Zvolit parametry"
+msgstr "Zvolit parametr"
 
 msgid "Tracer2: add a way with {0} points"
 msgstr "Tracer2: přidána cesta s {0} uzly"
@@ -34259,7 +34581,7 @@ msgid "Signing canceled!"
 msgstr "Podepisování přerušeno!"
 
 msgid "Please give a tolerance in meters"
-msgstr "Zadejte prosím toleranci v metrech."
+msgstr "Zadejte, prosím, toleranci v metrech."
 
 msgid "Select as much as you like:"
 msgstr "Zvolte, kolik chcete:"
@@ -34729,7 +35051,7 @@ msgid "Motorcars"
 msgstr "Osobní automobily"
 
 msgid "Bicycles"
-msgstr "Kola"
+msgstr "Jízdní kola"
 
 msgid "Mopeds"
 msgstr "Mopedy"
@@ -34993,8 +35315,8 @@ msgstr ""
 
 msgid "Go to Basic Editor and select standard vehicle type based exceptions"
 msgstr ""
-"Přejděte do základního editoru a vyberte standardní typ vozidla na základě "
-"výjimky"
+"Přejděte do základního editoru a vyberte výjimky založené na standardním "
+"typu vozidla"
 
 msgid "The required tag <tt>{0}={1}</tt> is missing."
 msgstr "Povinná značka <tt>{0}={1}</tt> chybí."
@@ -35029,7 +35351,7 @@ msgid "Split now"
 msgstr "Rozdělit teď"
 
 msgid "Split the ways"
-msgstr "Rozdělí cesty"
+msgstr "Rozdělit cesty"
 
 msgid ""
 "This turn restriction uses the node <span class=\"object-name\">{0}</span> "
@@ -35498,8 +35820,8 @@ msgid ""
 "Nothing found. Please select some closed ways or multipolygons to find all "
 "primitives inside them!"
 msgstr ""
-"Nic nenalezeno! Vyberte, prosím, nějaké uzavřené cesty nebo multipolygony, "
-"aby mohly být nalezeny všechny datové prvky uvnitř nich."
+"Nic nenalezeno. Vyberte, prosím, nějaké uzavřené cesty nebo multipolygony, "
+"aby mohly být nalezeny všechny prvky uvnitř nich."
 
 msgid "Area boundary [testing]"
 msgstr "Hranice oblasti [testování]"
diff --git a/i18n/po/cy.po b/i18n/po/cy.po
index 266fedf..e701239 100644
--- a/i18n/po/cy.po
+++ b/i18n/po/cy.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2009-07-17 21:45+0000\n"
 "Last-Translator: iggy23 <Unknown>\n"
 "Language-Team: Welsh <cy at li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : (n != 8 && n != 11) ? "
 "2 : 3;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:21+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:16+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: cy\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1389,7 +1389,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7919,6 +7919,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9233,6 +9239,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14448,6 +14457,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14456,6 +14473,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14901,6 +14922,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14913,9 +14946,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14928,6 +14967,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15719,10 +15761,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15842,7 +15884,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16169,6 +16211,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16201,7 +16248,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16321,6 +16368,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16489,6 +16541,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24831,6 +24888,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24961,18 +25021,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25571,10 +25670,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25622,9 +25721,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25656,9 +25752,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25764,16 +25857,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25827,6 +25920,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25895,6 +25991,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25916,6 +26018,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25942,6 +26050,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25956,6 +26067,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25998,18 +26112,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26506,6 +26608,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26539,6 +26644,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26626,12 +26736,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26732,9 +26868,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27311,14 +27444,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27349,13 +27474,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27367,7 +27489,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27379,22 +27504,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27403,13 +27635,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27442,10 +27692,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28473,6 +28738,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28724,9 +29016,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29968,9 +30257,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30951,6 +31237,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31080,9 +31372,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/da.po b/i18n/po/da.po
index 06546e6..ef4f86c 100644
--- a/i18n/po/da.po
+++ b/i18n/po/da.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2017-01-21 11:14+0000\n"
 "Last-Translator: Jørn <joern.map at gmail.com>\n"
 "Language-Team: Dansk <kde-i18n-doc at kde.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:44+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:43+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: da_DK\n"
 "X-Poedit-SourceCharset: utf-8\n"
 
@@ -1490,8 +1490,8 @@ msgstr "Tegn linjer mellem rå GPS-punkter."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Slår den globale indstilling \"{0}\" til/fra."
 
-msgid "Encourage/discourage upload"
-msgstr "Anbefal/fraråd upload"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "Adskil veje"
@@ -8503,6 +8503,12 @@ msgstr ""
 "<html>Autostart ''Download fra OSM'' dialogen hver gang JOSM startes.<br>Du "
 "kan åbne den manuelt fra menuen Filer eller værktøjslinjen.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9970,6 +9976,9 @@ msgstr "API-version: {0}"
 msgid "Upload is discouraged"
 msgstr "Upload frarådes"
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Konvertér til GPX-lag"
 
@@ -15813,6 +15822,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "beboelse"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "buskads"
@@ -15821,6 +15838,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr "skov"
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "associatedStreet"
@@ -16266,6 +16287,18 @@ msgstr "VoGIS: Höhen und Gelände"
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr "AGIV Flanders most recent aerial imagery"
 
@@ -16278,9 +16311,15 @@ msgstr "AGIV Flanders GRB"
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr numerical imagery (2013)"
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr "URBISnl numerical imagery (2013)"
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr "URBIS 2009 aerial imagery"
 
@@ -16293,6 +16332,9 @@ msgstr "URBIS 2014 aerial imagery"
 msgid "URBIS 2015 aerial imagery"
 msgstr "URBIS 2015 aerial imagery"
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr "SPW(allonie) PICC numerical imagery"
 
@@ -17099,11 +17141,11 @@ msgstr "Stadt Zürich Übersichtsplan (Strassen, Gebäude, Hausnummer)"
 msgid "Stadt Zürich Luftbild 2011"
 msgstr "Stadt Zürich Luftbild 2011"
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
-msgstr "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
+msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
-msgstr "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
+msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
 msgstr "Canton de Génève 5cm (SITG 2011)"
@@ -17223,8 +17265,8 @@ msgstr "Texas Orthophoto"
 msgid "Philadelphia 2015 Imagery"
 msgstr "Philadelphia 2015 Imagery"
 
-msgid "MD 2014 6 Inch Aerial Imagery"
-msgstr "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
+msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
 msgstr "MD Three Inch Aerial Imagery"
@@ -17563,6 +17605,11 @@ msgstr ""
 "Optimeret til basemap.at."
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -17608,9 +17655,8 @@ msgstr ""
 "Implementerer en kommandolinje og gør det muligt at oprette dine egne "
 "kommandoer. Se link til standard kommandoer (bue, cirkel osv.)"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
-"(Advarsel: Eksperimentel!) Værktøj til at sammensmelte (flette) data."
 
 msgid "Downloads new data when you pan/zoom"
 msgstr "Downloader nye data når du panorerer/zoomer"
@@ -17756,6 +17802,11 @@ msgstr "Udvidelse til at importere rumlige referencebilleder"
 msgid "Import vector graphics (SVG)"
 msgstr "Importer vektorgrafik (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 "Denne udvidelse forenkler kortlægning og redigering af indendørs gange."
@@ -17973,6 +18024,11 @@ msgid "Plugin for reverting changesets"
 msgstr "Udvidelse for tilbageførelse af rettesæt"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -26430,6 +26486,9 @@ msgstr ""
 "{0} er tagget for det lineære vandløb. Til at tagge vandområdet brug {1} + "
 "{2} i stedet."
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr "forkortet gadenavn"
 
@@ -26568,19 +26627,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr "Punkter der duplikerer \"forældre\"-vej tags"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
-"intet wikipedia-sprog angivet, brug \"wikipedia\"=\"sprog:sidetitel\""
 
-msgid "unknown language prefix in wikipedia tag"
-msgstr "ukendt sprog præfiks i wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
+msgstr ""
 
-msgid "deprecated format for wikipedia tag"
-msgstr "forældet format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
+msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr "''wikipedia''=''sprog:sidetitel''"
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr "Skjul ikoner ved lav zoom"
 
@@ -27207,11 +27304,11 @@ msgstr "Total antal billeder:"
 msgid "images"
 msgstr "billeder"
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
-msgstr "Trafik skilt font fra ''{0}'' har forkert format"
+msgid "Mapillary object layer"
+msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
-msgstr "Kunne ikke læse font-fil fra ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
+msgstr ""
 
 msgid "Mapillary"
 msgstr "Mapillary"
@@ -27258,9 +27355,6 @@ msgstr "Sammenlæg tilstand"
 msgid "Join/unjoin pictures"
 msgstr "Sammenlæg/adskil billeder"
 
-msgid "Join Mapillary pictures"
-msgstr "Sammenlæg Mapillary billeder"
-
 msgid "Submit changeset"
 msgstr "Indsend rettesæt"
 
@@ -27296,9 +27390,6 @@ msgstr "Upload billeder."
 msgid "Walk mode"
 msgstr "Gå tilstand"
 
-msgid "Start walk mode"
-msgstr "Start gå tilstand"
-
 msgid "Zoom to selected image"
 msgstr "Zoom til valgt billede"
 
@@ -27404,18 +27495,18 @@ msgstr "Mapillary historie"
 msgid "Open Mapillary history dialog"
 msgstr "Åbn Mapillary historie dialog"
 
+msgid "No image selected"
+msgstr "Intet billede valgt"
+
+msgid "Press \"{0}\" to download images"
+msgstr ""
+
 msgid "Mapillary picture"
 msgstr "Mapillary billede"
 
 msgid "Open Mapillary window"
 msgstr "Åbn Mapillary vindue"
 
-msgid "Mapillary dialog"
-msgstr "Mapillary dialog"
-
-msgid "Open Mapillary main dialog"
-msgstr "Åbn Mapillary hoveddialog"
-
 msgid "Next picture"
 msgstr "Næste billede"
 
@@ -27467,6 +27558,9 @@ msgstr "Flyt til billedets placering med næste/forrige knapper"
 msgid "Preview images when hovering its icon"
 msgstr "Forhåndsvis billeder når markør er over dets ikon"
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr "Download tilstand"
 
@@ -27535,6 +27629,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -27556,6 +27656,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] "Slettede {0} billede"
@@ -27582,6 +27688,9 @@ msgstr[1] "Drejede {0} billeder"
 msgid "2 images unjoined"
 msgstr "2 billeder adskilt"
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr "alt i det synlige område"
 
@@ -27598,6 +27707,9 @@ msgstr ""
 "Det downloadede OSM-område er for stort. Download tilstand er blevet ændret "
 "til OSM område indtil laget genstartes."
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr "Downloader"
 
@@ -27641,18 +27753,6 @@ msgstr "Ikke logget ind på Mapillary"
 msgid "Uploading: {0}"
 msgstr "Uploader: {0}"
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr "Nøglen ''{0}'' til billedet er ugyldig!"
-
-msgid "The image key must not be null here!"
-msgstr "Nøglen til billedet må ikke være null her!"
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr "Nøglen ''{0}'' til rækkefølgen  er ugyldig!"
-
-msgid "The sequence key must not be null here!"
-msgstr "Nøglen til rækkefølgen må ikke være null her!"
-
 msgid "NanoLog"
 msgstr "NanoLog"
 
@@ -28251,6 +28351,9 @@ msgstr "Bygning:"
 msgid "Tags:"
 msgstr "Tags:"
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "Navn:"
 
@@ -28284,6 +28387,11 @@ msgstr "Forsøger at finde et område ved:"
 msgid "Created area"
 msgstr "Oprettet område"
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr "Kan ikke finde en polygon hvor du klikkede."
 
@@ -28385,12 +28493,38 @@ msgstr "Læg punkter sammen"
 msgid "Merge nodes with existing nodes"
 msgstr "Læg punkter sammen med eksisterende punkter"
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr "Fejlfind"
 
 msgid "Debugging mode will write images for each processing step."
 msgstr "Fejlfindingstilstand vil skrive billeder for hver behandlingstrin."
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr "Bygnings generalisering"
 
@@ -28494,9 +28628,6 @@ msgstr "Ingen adressepunkter fundet inden i bygninger"
 msgid "on polygon"
 msgstr "på polygon"
 
-msgid "Add address"
-msgstr "Tilføj adresse"
-
 msgid "Helping tool for tag address"
 msgstr "Hjælpeværktøj til adresse tags"
 
@@ -29136,14 +29267,6 @@ msgstr "Slet det valgte skema fra listen."
 msgid "Color Schemes"
 msgstr "Farveskemaer"
 
-msgid "Conflate object pair"
-msgstr "Sammensmelt objekt par"
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] "Tilføjede {0} objekt til emnets lag"
-msgstr[1] "Tilføjede {0} objekter til emnets lag"
-
 msgid "Conflation"
 msgstr "Sammensmeltning"
 
@@ -29174,15 +29297,12 @@ msgstr "Konfigurer"
 msgid "Configure conflation options"
 msgstr "Konfigurer sammensmeltnings muligheder"
 
-msgid "Delete {0} conflation matches"
-msgstr "Slet {0} sammensmeltnings træffere"
-
-msgid "Remove {0} unmatched objects"
-msgstr "Fjern {0} ikke trufne objekter"
-
 msgid "Remove selected matches"
 msgstr "Fjern valgte træffere"
 
+msgid "Remove ({0})"
+msgstr ""
+
 msgid "Conflate"
 msgstr "Sammensmelt"
 
@@ -29192,8 +29312,11 @@ msgstr "Sammensmelt valgte objekter"
 msgid "Conflation: {0}"
 msgstr "Sammensmeltning: {0}"
 
-msgid "Cannot replace geometry."
-msgstr "Kan ikke erstatte geometri."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
+msgstr ""
 
 msgid "Zoom to selected primitive(s)"
 msgstr "Zoom til valgte primitive(r)"
@@ -29204,23 +29327,130 @@ msgstr "Vælg valgte primitive(r)"
 msgid "Select the primitives currently selected in the list"
 msgstr "Vælg de primitiver aktuelt valgt i listen"
 
-msgid "Match finder settings"
-msgstr "Træf finder indstillinger"
+msgid "Generating matches"
+msgstr ""
 
-msgid "Match finder method"
-msgstr "Træf finder metode"
+msgid "Finding matches"
+msgstr ""
 
-msgid "Threshold distance"
-msgstr "Grænseværdi for afstand"
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr "Emne"
+
+msgid "Conflate object pair"
+msgstr "Sammensmelt objekt par"
+
+msgid "Cannot replace geometry."
+msgstr "Kan ikke erstatte geometri."
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] "Tilføjede {0} objekt til emnets lag"
+msgstr[1] "Tilføjede {0} objekter til emnets lag"
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr "Fjern {0} ikke trufne objekter"
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Type"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
+msgstr ""
+
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
+msgstr ""
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
-msgstr "Afstande større end dette vil resultere i en score på nul."
+msgid "Matching"
+msgstr ""
 
-msgid "Centroid distance"
-msgstr "Tyngdepunkt afstand"
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
 
-msgid "Hausdorff distance"
-msgstr "Hausdorff afstand"
+msgid "<Please select data>"
+msgstr ""
 
 msgid "Configure conflation settings"
 msgstr "Konfigurer sammensmeltnings indstillinger"
@@ -29228,14 +29458,32 @@ msgstr "Konfigurer sammensmeltnings indstillinger"
 msgid "Generate matches"
 msgstr "Generere træffere"
 
-msgid "Layer:"
-msgstr "Lag:"
+msgid "Reference:"
+msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
-msgstr "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
+msgstr ""
 
-msgid "Subject"
-msgstr "Emne"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Erstat geometri"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
+msgstr ""
 
 msgid "Selections must be made for both reference and subject."
 msgstr "Markeringer skal foretages for både reference og emne."
@@ -29267,11 +29515,26 @@ msgstr "Tom markering"
 msgid "Freeze reference selection"
 msgstr "Frys valgt reference"
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
-msgstr "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
+msgstr ""
 
-msgid "Invalid reference or subject"
-msgstr "Ugyldig reference eller emne"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
+msgstr ""
 
 msgid "Download OSM data continuously"
 msgstr "Hent OSM data kontinuerligt"
@@ -30364,6 +30627,33 @@ msgstr "Importer vektor grafik"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "SVG filer [ImportVec plugin] (*.svg)"
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr "Guide til forhal ..."
 
@@ -30629,9 +30919,6 @@ msgstr "Erstat vej"
 msgid "Replace way of selected way with a new way"
 msgstr "Erstat den valgte vej med en ny vej"
 
-msgid "Replace Geometry"
-msgstr "Erstat geometri"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -31944,9 +32231,6 @@ msgstr "Rediger foto GPS-data"
 msgid "Please select an image first."
 msgstr "Vælg et billede først."
 
-msgid "No image selected"
-msgstr "Intet billede valgt"
-
 msgid "(Empty values delete the according fields.)"
 msgstr "(Tomme værdier sletter de tilhørende felter.)"
 
@@ -32955,6 +33239,12 @@ msgstr ""
 "Advarsel ikke understøttet slutelement ''{0}'' i rettesætsindhold på "
 "position ({1},{2}). Springer over."
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr "Vejskilt-udvidelse"
 
@@ -33084,9 +33374,6 @@ msgstr "Ret indstillinger for ruteplan"
 msgid "Speed (Km/h)"
 msgstr "Hastighed (km/t)"
 
-msgid "Weight"
-msgstr "Type"
-
 msgid "Enter weight values"
 msgstr "Indtast vægtede værdier"
 
diff --git a/i18n/po/de.po b/i18n/po/de.po
index 8f4378d..987f2b9 100644
--- a/i18n/po/de.po
+++ b/i18n/po/de.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: de\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
-"PO-Revision-Date: 2017-02-25 19:22+0000\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
+"PO-Revision-Date: 2017-03-22 17:41+0000\n"
 "Last-Translator: Dirk Stöcker <launchpad at dstoecker.de>\n"
 "Language-Team: JOSM\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:50+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:48+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: de\n"
 "X-Poedit-SearchPath-0: .\n"
 "X-Poedit-Basepath: /home/simon/src/josm.all/i18n\n"
@@ -483,7 +483,7 @@ msgid ""
 "* Three nodes."
 msgstr ""
 "Bitte auswählen :\n"
-"* Einen nicht-selbstkreuzenden Weg mit maximal zwei seiner Punkte,\n"
+"* Eine nicht-selbstkreuzende Linie mit maximal zwei ihrer Punkte,\n"
 "* Drei Punkte."
 
 msgid "Download from OSM..."
@@ -1535,8 +1535,8 @@ msgstr "Linien zwischen GPS-Rohdatenpunkten zeichnen."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Globale Einstellung \"{0}\" umschalten."
 
-msgid "Encourage/discourage upload"
-msgstr "Hochladen erlauben/verhindern"
+msgid "Discourage upload"
+msgstr "Hochladen"
 
 msgid "UnGlue Ways"
 msgstr "Linien trennen"
@@ -1595,13 +1595,13 @@ msgstr ""
 "und alle Punkte werden ausgewählt."
 
 msgid "Existing node"
-msgstr "Vorhandener Knotenpunkt"
+msgstr "Vorhandener Punkt"
 
 msgid "Both nodes"
-msgstr "Beide Knotenpunkte"
+msgstr "Beide Punkte"
 
 msgid "New node"
-msgstr "Neuer Knotenpunkt"
+msgstr "Neuer Punkt"
 
 msgid "Tags / Memberships"
 msgstr "Merkmale / Mitgliedschaften"
@@ -1610,11 +1610,10 @@ msgid "Unglue"
 msgstr "Loslösen"
 
 msgid "Where should the tags of the node be put?"
-msgstr "Wohin sollen die Merkmale des Knotenpunkts gelegt werden?"
+msgstr "Wo sollen die Merkmale des Punktes gesetzt werden?"
 
 msgid "Where should the memberships of this node be put?"
-msgstr ""
-"Wohin sollen die Mitgliedschaften von diesem Knotenpunkt gelegt werden?"
+msgstr "Wohin sollen die Mitgliedschaften von diesem Punkt gelegt werden?"
 
 msgid "Unglued Node"
 msgstr "Punkt getrennt"
@@ -1685,7 +1684,7 @@ msgstr[1] ""
 "Die betroffene Linie würde nach dem Abtrennen der Punkte verschwinden."
 
 msgid "Some irrelevant nodes have been removed from the selection"
-msgstr "Einige unbedeutende Knotenpunkte wurden aus der Auswahl entfernt"
+msgstr "Einige unbedeutende Punkte wurden aus der Auswahl entfernt"
 
 msgid "Undo"
 msgstr "Rückgängig"
@@ -2323,7 +2322,7 @@ msgid "Improve Way Accuracy mode"
 msgstr "Modus zum Verbessern der Liniengenauigkeit"
 
 msgid "improve way accuracy helper line"
-msgstr "Hilfslinie für Verbesserung der Weggenauigkeit"
+msgstr "Hilfslinie für Verbesserung der Liniengenauigkeit"
 
 msgid "Click on the way to start improving its shape."
 msgstr "Klicken Sie auf eine Linie, um ihre Form zu verbessern."
@@ -2355,8 +2354,8 @@ msgstr ""
 
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
-msgstr[0] "Einen neuen Punkt zum Weg hinzufügen"
-msgstr[1] "Einen neuen Punkt zu {0} Wegen hinzufügen"
+msgstr[0] "Einen neuen Punkt zur Linie hinzufügen"
+msgstr[1] "Einen neuen Punkt zu {0} Linien hinzufügen"
 
 msgid "Cannot delete node that has tags"
 msgstr "Kann Punkt mit Merkmalen nicht löschen"
@@ -2788,14 +2787,14 @@ msgstr "Eigenschaften"
 msgid ""
 "ways with at least 20 nodes, or relations containing at least 20 nodes"
 msgstr ""
-"Wege mit mindestens 20 Knoten oder Relationen, die mindestens 20 Knoten "
+"Linien mit mindestens 20 Punkten oder Relationen, die mindestens 20 Punkte "
 "enthalten"
 
 msgid ""
 "nodes with at least 3 referring ways, or relations containing at least 3 ways"
 msgstr ""
-"Knotenpunkte mit mindestens 3 zuweisenden Wegen oder Relationen, die "
-"mindestens 3 Wege enthalten"
+"Punkte mit mindestens 3 zuweisenden Linien oder Relationen, die mindestens 3 "
+"Linien enthalten"
 
 msgid "objects having 5 to 10 tags"
 msgstr "Objekte mit 5 bis 10 Merkmalen"
@@ -2807,7 +2806,7 @@ msgid "closed ways with an area of 100 m²"
 msgstr "Geschlossene Linien mit einer Fläche von 100 m²"
 
 msgid "ways with a length of 200 m or more"
-msgstr "Wege mit einer Länge von 200 m oder mehr"
+msgstr "Linien mit einer Länge von 200 m oder mehr"
 
 msgid "state"
 msgstr "Zustand"
@@ -2844,11 +2843,11 @@ msgid "objects being part of a relation as role <i>stop</i>"
 msgstr "Objekte einer Relation als Rolle <i>stop</i>"
 
 msgid "n-th member of relation and/or n-th node of way"
-msgstr "n-tes Element einer Relation und/oder n-ter Punkt eines Weges"
+msgstr "n-tes Element einer Relation und/oder n-ter Punkt einer Linie"
 
 msgid "every n-th member of relation and/or every n-th node of way"
 msgstr ""
-"jedes n-te Element einer Relation und/oder jeder n-te Punkt eines Weges"
+"jedes n-te Element einer Relation und/oder jeder n-te Punkt einer Linie"
 
 msgid "view"
 msgstr "Ansicht"
@@ -3098,7 +3097,7 @@ msgid "Change relation {0}"
 msgstr "Relation {0} verändern"
 
 msgid "Change nodes of {0}"
-msgstr "Knotenpunkte von {0} ändern"
+msgstr "Punkte von {0} ändern"
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "\"{0}\" vom Punkt \"{1}\" entfernen"
@@ -3347,13 +3346,13 @@ msgid_plural ""
 "of these tags are defined by its direction:<br/>{1}Do you really want to "
 "change the way direction, thus its semantic meaning?</html>"
 msgstr[0] ""
-"<html>Sie sind dabei den Weg ''{0}'' umzudrehen und<br/>die Semantik von "
-"dessen Merkmal ''{1}'' hängt von der Wegrichtung ab.<br/>Möchten Sie "
-"wirklich die Wegrichtung ändern und damit auch dessen Semantik?</html>"
+"<html>Sie sind dabei die Linie ''{0}'' umzudrehen und<br/>die Bedeutung von "
+"deren Merkmal ''{1}'' hängt von der Linienrichtung ab.<br/>Möchten Sie "
+"wirklich die Linienrichtung ändern und damit auch deren Bedeutung?</html>"
 msgstr[1] ""
-"<html>Sie sind dabei den Weg ''{0}'' umzudrehen und<br/>die Semantik von "
-"folgenden Merkmalen hängt von der Wegrichtung ab:<br/>{1}<br/>Möchten Sie "
-"wirklich die Wegrichtung ändern und damit auch dessen Semantik?</html>"
+"<html>Sie sind dabei die Linie ''{0}'' umzudrehen und<br/>die Bedeutung von "
+"folgenden Merkmalen hängt von der Linienrichtung ab:<br/>{1}<br/>Möchten Sie "
+"wirklich die Linienrichtung ändern und damit auch deren Bedeutung?</html>"
 
 msgid "Reverse directional way."
 msgstr "Richtung von gerichtetem Weg umdrehen."
@@ -4147,12 +4146,13 @@ msgstr "Prüft auf Fehler im Bezug auf API-Anforderungen"
 msgid ""
 "Way contains more than {0} nodes. It should be replaced by a multipolygon"
 msgstr ""
-"Weg enthält mehr als {0} Punkte. Er sollte durch ein Multipolygon ersetzt "
+"Linie enthält mehr als {0} Punkte. Sie sollte durch ein Multipolygon ersetzt "
 "werden"
 
 msgid "Way contains more than {0} nodes. It should be split or simplified"
 msgstr ""
-"Weg enthält mehr als {0} Punkte. Er sollte aufgeteilt oder vereinfacht werden"
+"Linie enthält mehr als {0} Punkte. Sie sollte aufgeteilt oder vereinfacht "
+"werden"
 
 msgid "Barriers and entrances"
 msgstr "Barrieren und Eingänge"
@@ -4224,7 +4224,7 @@ msgid "Self crossing"
 msgstr "Selbstüberschneidung"
 
 msgid "Self-crossing ways"
-msgstr "Selbstüberquerende Wege"
+msgstr "Selbstüberquerende Linien"
 
 msgid ""
 "This test checks if two roads, railways, waterways or buildings crosses in "
@@ -4346,7 +4346,7 @@ msgid "Lane tags"
 msgstr "Spureigenschaften"
 
 msgid "Test that validates ''lane:'' tags."
-msgstr "Test, der die \"lane:*\"-Tags validiert."
+msgstr "Test, der die \"lane:*\"-Mermale validiert."
 
 msgid "Number of {0} greater than {1}"
 msgstr "Anzahl von ''{0}'' größer als {1}"
@@ -4448,7 +4448,7 @@ msgid "Multipolygon is not closed"
 msgstr "Multipolygon nicht geschlossen"
 
 msgid "Multipolygon rings share node(s)"
-msgstr "Multipolygon-Ringe teilen sich Knoten"
+msgstr "Multipolygon-Ringe teilen sich Punkte"
 
 msgid "Intersection between multipolygon ways"
 msgstr "Multipolygonlinien schneiden sich"
@@ -4552,7 +4552,7 @@ msgid "Railways share segment with area"
 msgstr "Gleise teilen Abschnitt mit Fläche"
 
 msgid "Ways share segment with area"
-msgstr "Wege teilen Abschnitt mit Fläche"
+msgstr "Linien teilen Abschnitt mit Fläche"
 
 msgid "Overlapping highways"
 msgstr "Überlappende Straßen"
@@ -7142,7 +7142,7 @@ msgid ""
 "<i>node</i>, {2} for <i>way</i>, and {3} for <i>relation</i>)"
 msgstr ""
 "Geben Sie Objekte im gemischten Modus so an: {0}<br/>({1} steht für "
-"<i>Punkt</i>, {2} für <i>Weg</i>, und {3} für <i>Relation</i>)"
+"<i>Punkt</i>, {2} für <i>Linie</i>, und {3} für <i>Relation</i>)"
 
 msgid "Ranges of object IDs are specified with a hyphen, for instance: {0}"
 msgstr ""
@@ -8125,10 +8125,10 @@ msgid "to apply first suggestion"
 msgstr "zum Übernehmen des ersten Vorschlags"
 
 msgid "to add without closing the dialog"
-msgstr "zum Hinzufügen ohne Schließung des Dialogs"
+msgstr "zum Hinzufügen ohne Schließen des Dialogs"
 
 msgid "to add first suggestion without closing the dialog"
-msgstr "zum Hinzufügen des ersten Vorschlags ohne Schließung des Dialogs"
+msgstr "zum Hinzufügen des ersten Vorschlags ohne Schließen des Dialogs"
 
 msgid "Please enter the number of recently added tags to display"
 msgstr ""
@@ -8141,22 +8141,22 @@ msgid "Recently added tags"
 msgstr "Zuletzt verwendete Merkmale"
 
 msgid "Choose recent tag {0}"
-msgstr "Wähle das neueste Tag {0}"
+msgstr "Aktuelles Merkmal {0} wählen"
 
 msgid "Use this tag again"
 msgstr "Merkmal wieder verwenden"
 
 msgid "Apply recent tag {0}"
-msgstr "Wende das neueste Tag an {0}"
+msgstr "Aktuelles Merkmal {0} anwenden"
 
 msgid "The key ''{0}'' is already used"
-msgstr "Die Taste ''{0}'' wird bereits benutzt"
+msgstr "Der Schlüssel ''{0}'' wird bereits benutzt"
 
 msgid "Ignore key ''{0}''"
 msgstr "Ignoriere Schlüssel \"{0}\""
 
 msgid "Ignore tag ''{0}''"
-msgstr "Ignoriere Tag \"{0}\""
+msgstr "Ignoriere Merkmal \"{0}\""
 
 msgid "Edit ignore list"
 msgstr "Bearbeite Ignorierliste"
@@ -8727,6 +8727,12 @@ msgstr ""
 "starten.<br>Die Funktion kann auch manuell aus dem Dateimenü oder der "
 "Werkzeugleiste gestartet werden.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr "Auf heruntergeladene Daten zoomen"
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr "Auswählen, um auf alle neu heruntergeladenen Daten zu zoomen."
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -8987,7 +8993,7 @@ msgid "Node {0}"
 msgstr "Punkt {0}"
 
 msgid "The nodes of this way are in reverse order"
-msgstr "Die Knotenpunkte auf diesem Weg sind in umgekehrter Richtung"
+msgstr "Die Punkte dieser Linie sind in umgekehrter Richtung"
 
 msgid "Zoom to node"
 msgstr "Auf Punkt zoomen"
@@ -10254,6 +10260,9 @@ msgstr "API-Version: {0}"
 msgid "Upload is discouraged"
 msgstr "Hochladen wird verhindert"
 
+msgid "Upload is blocked"
+msgstr "Hochladen ist blockiert"
+
 msgid "Convert to GPX layer"
 msgstr "Zu GPX-Ebene konvertieren"
 
@@ -10803,8 +10812,8 @@ msgid ""
 "Some waypoints which were too far from the track to sensibly estimate their "
 "time were omitted."
 msgstr ""
-"Einige Wegpunkte, welche für eine vernünftige Zeitabschätzung zu weit von "
-"der GPS-Spur entfernt waren, wurden ignoriert."
+"Einige Punkte, welche für eine vernünftige Zeitabschätzung zu weit von der "
+"GPS-Spur entfernt waren, wurden ignoriert."
 
 msgid "Import images"
 msgstr "Bilder importieren"
@@ -13670,7 +13679,7 @@ msgid "Add a new tag"
 msgstr "Neues Merkmal hinzufügen"
 
 msgid "Paste tags from buffer"
-msgstr "Tags aus dem Speicher einfügen"
+msgstr "Merkmale aus dem Speicher einfügen"
 
 msgid "Use preset ''{0}'' of group ''{1}''"
 msgstr "Verwende Vorlage \"{0}\" aus Gruppe \"{1}\""
@@ -14301,7 +14310,7 @@ msgid "Downloading OSM data..."
 msgstr "OSM-Daten werden heruntergeladen …"
 
 msgid "Fetching node with id {0} from ''{1}''"
-msgstr "Knotenpunkt mit der Kennung {0} von \"{1}\" wird abgerufen"
+msgstr "Punkt mit der Kennung {0} von \"{1}\" wird abgerufen"
 
 msgid "Fetching way with id {0} from ''{1}''"
 msgstr "Linie mit der Kennung {0} von \"{1}\" wird abgerufen"
@@ -14723,8 +14732,7 @@ msgstr "Hochladen wird mit einer Anfrage pro Objekt begonnen …"
 
 msgid "{0}% ({1}/{2}), {3} left. Uploading node ''{4}'' (id: {5})"
 msgstr ""
-"{0}% ({1}/{2}), {3} verbleiben. Knotenpunkt ''{4}'' (Kennung: {5}) wird "
-"hochgeladen"
+"{0}% ({1}/{2}), {3} verbleiben. Punkt ''{4}'' (Kennung: {5}) wird hochgeladen"
 
 msgid "{0}% ({1}/{2}), {3} left. Uploading way ''{4}'' (id: {5})"
 msgstr ""
@@ -16322,6 +16330,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "Wohngebiet"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr "Bauland"
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr "Dorfanger"
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "Buschland"
@@ -16330,6 +16346,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr "Wald"
 
+msgctxt "natural"
+msgid "grassland"
+msgstr "Grünland"
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "Zugeordnete Straße"
@@ -16780,6 +16800,18 @@ msgstr "VoGIS: Höhen und Gelände"
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr "imagico.de OSM Bilder für die Kartierung: Rila- und Pirin-Gebirge"
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr "OpenStreetMap (Belgischer Stil)"
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr "OpenStreetMap (Belgischer Stil - Französisch)"
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr "OpenStreetMap (Belgischer Stil - Niederländisch)"
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr "OpenStreetMap (Belgischer Stil - Deutsch)"
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr "AGIV Flandern neueste Luftbilder"
 
@@ -16792,10 +16824,16 @@ msgstr ""
 "Referenzdatei)"
 
 msgid "URBISfr numerical imagery (2013)"
-msgstr "URBISfr Zahlenbilder (2013)"
+msgstr "URBISfr (Haus-)Nummernkarten  (2013)"
+
+msgid "URBISfr numerical imagery"
+msgstr "URBISfr (Haus-)Nummernkarten"
 
 msgid "URBISnl numerical imagery (2013)"
-msgstr "URBISnl Zahlenbilder (2013)"
+msgstr "URBISnl (Haus-)Nummernkarten (2013)"
+
+msgid "URBISnl numerical imagery"
+msgstr "URBISnl  (Haus-)Nummernkarten"
 
 msgid "URBIS 2009 aerial imagery"
 msgstr "URBIS 2009 Luftbilder"
@@ -16809,8 +16847,11 @@ msgstr "URBIS 2014 Luftbilder"
 msgid "URBIS 2015 aerial imagery"
 msgstr "URBIS 2015 Luftbilder"
 
+msgid "URBIS 2016 aerial imagery"
+msgstr "URBIS 2016 Luftbilder"
+
 msgid "SPW(allonie) PICC numerical imagery"
-msgstr "SPW (Wallonie) PICC-Zahlenbild"
+msgstr "SPW (Wallonie) PICC-(Haus-)Nummernkarten"
 
 msgid "SPW(allonie) most recent aerial imagery"
 msgstr "SPW (Wallonie) neueste Luftbilder"
@@ -17108,10 +17149,10 @@ msgstr ""
 "Watt (Infrarot)"
 
 msgid "Saxony latest aerial imagery"
-msgstr "Sachsen neueste Luftbilder"
+msgstr "Sachsen neuestes Luftbild"
 
 msgid "Saxony latest aerial imagery infrared"
-msgstr "Sachsen neueste Luftbilder Infrarot"
+msgstr "Sachsen neuestes Luftbild Infrarot"
 
 msgid "Saxony aerial imagery 2005"
 msgstr "Sachsen Luftbilder 2005"
@@ -17129,7 +17170,7 @@ msgid "Mainz all aerial imageries"
 msgstr "Mainz alle Luftbilder"
 
 msgid "Mainz latest aerial imagery"
-msgstr "Mainz aktuelles Luftbild"
+msgstr "Mainz neuestes Luftbild"
 
 msgid "imagico.de OSM images for mapping: Qasigiannguit"
 msgstr "imagico.de OSM Bilder für die Kartierung: Qasigiannguit"
@@ -17626,11 +17667,11 @@ msgstr "Stadt Zürich Übersichtsplan (Strassen, Gebäude, Hausnummer)"
 msgid "Stadt Zürich Luftbild 2011"
 msgstr "Stadt Zürich Luftbild 2011"
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
-msgstr "Luftbild Kanton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
+msgstr "Kanton Solothurn neuestes Luftbild SOGIS RGB"
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
-msgstr "Luftbild Kanton Solothurn Infrarot (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
+msgstr "Kanton Solothurn neuestes Luftbild SOGIS Infrarot"
 
 msgid "Canton de Génève 5cm (SITG 2011)"
 msgstr "Kanton Genf 5cm (SITG 2011)"
@@ -17751,8 +17792,8 @@ msgstr "Texas Orthofoto"
 msgid "Philadelphia 2015 Imagery"
 msgstr "Philadelphia 2015 Bilder"
 
-msgid "MD 2014 6 Inch Aerial Imagery"
-msgstr "Maryland 2014 6 Zoll Luftbild"
+msgid "MD Latest 6 Inch Aerial Imagery"
+msgstr "MD Neueste 6-Zoll-Luftbilder"
 
 msgid "MD Three Inch Aerial Imagery"
 msgstr "Maryland 3 Zoll Luftbild"
@@ -18089,10 +18130,17 @@ msgid ""
 "for basemap.at."
 msgstr ""
 "Erlaubt das Auswählen von Flächen auf Luftbildern und die automatische "
-"Erzeugung von Wegen als Polygonen. Entwickelt zum vereinfachten Abzeichnen "
+"Erzeugung von Linien als Polygon. Entwickelt zum vereinfachten Abzeichnen "
 "von Gebäuden. Optimiert für basemap.at."
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+"Ordnet Adressen automatisch gewählten Objekten in Österreich zu. Daten (c) "
+"Österreichisches Adressregister."
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -18140,8 +18188,10 @@ msgstr ""
 "Implementiert eine Befehlszeile und ermöglicht das Erstellen Ihrer Befehle. "
 "Siehe Link für Standardbefehle (Bogen, Kreis, usw.)"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
-msgstr "(Warnung: Experimentell!) Werkzeug zum Zusammenführen von Daten."
+msgid "Tool for conflating data (matching and merging)."
+msgstr ""
+"Werkzeug zum Zusammenführen von Daten (Übereinstimmungen finden und "
+"verschmelzen)."
 
 msgid "Downloads new data when you pan/zoom"
 msgstr "Lädt neue Daten herunter, während Sie verschieben/zoomen"
@@ -18290,6 +18340,13 @@ msgstr "Erweiterung zum Import georeferenzierter Bilder"
 msgid "Import vector graphics (SVG)"
 msgstr "Vektorgrafiken (SVG) importieren"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+"Erweitert den Liniengenauigkeitsverbesserungsmodus mit Helfern um Punkte auf "
+"genauen Abständen und Winkeln zu platzieren."
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 "Diese Erweiterung erleichtert das Kartieren und Bearbeiten von Fluren in "
@@ -18517,6 +18574,14 @@ msgid "Plugin for reverting changesets"
 msgstr "Erweiterung zum rückgängig machen von Änderungssätzen"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+"Erweitert eine einfache Kreuzung in kleinen Schritten zu einem Kreisverkehr. "
+"Einen Kreuzungs-Punkt oder Kreisverkehr auswählen und Strg-Umschalt-R "
+"drücken."
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -20576,14 +20641,14 @@ msgstr "Entfernung (Kilometer)"
 
 msgctxt "junction=yes"
 msgid "Named Junction"
-msgstr "Benannter Straßenknotenpunkt"
+msgstr "Benannter Straßenabzweig"
 
 msgid ""
 "Used in some countries for a named road junction who’s name serves for local "
 "orientation."
 msgstr ""
-"Wird in einigen Ländern für Straßenknotenpunkte verwendet, die einen Namen "
-"haben, der der Orientierung im Nahbereich dient."
+"Wird in einigen Ländern für Straßenabzeige verwendet, die einen Namen haben, "
+"der der Orientierung im Nahbereich dient."
 
 msgid "Elevator"
 msgstr "Aufzug"
@@ -26444,7 +26509,7 @@ msgid "Detour Route"
 msgstr "Umleitungsstrecke"
 
 msgid "Ref of the way this is a detour to"
-msgstr "Ref des Weges, für den dies eine Umleitung ist"
+msgstr "Referenz der Linie, für welche dies eine Umleitung ist"
 
 msgid "fork node for alternative routes"
 msgstr "Abzweigung für alternative Routen"
@@ -27006,6 +27071,9 @@ msgstr ""
 "{0} ist das Merkmal für einen linearen Wasserweg. Um die Wasserfläche zu "
 "erfassen stattdessen {1} + {2} benutzen."
 
+msgid "node connects highway and building"
+msgstr "Punkt verbindet Straße und Gebäude"
+
 msgid "abbreviated street name"
 msgstr "Abgekürzter Straßenname"
 
@@ -27013,7 +27081,7 @@ msgid "wrong highway tag on a node"
 msgstr "Falsches Straßenmerkmal auf einem Punkt"
 
 msgid "wrong crossing tag on a way"
-msgstr "Falsches Übergangs-Merkmal auf einem Weg"
+msgstr "Falsches Übergangs-Merkmal auf einer Linie"
 
 msgid "Unnamed unclassified highway"
 msgstr "Unbenannte Verbindungsstraße"
@@ -27060,7 +27128,7 @@ msgid "layer should be between -5 and 5"
 msgstr "Ebene sollte zwischen -5 und 5 liegen"
 
 msgid "{0} should have numbers only with optional .5 increments"
-msgstr "{0} sollte nur Zahlen mit optionalen 0,5-Schritten aufweisen"
+msgstr "{0} sollte nur Zahlen mit optionalen 0.5-Schritten aufweisen"
 
 msgid ""
 "{0}: meters is default; period is separator; if units, put space then unit"
@@ -27147,20 +27215,68 @@ msgid "Nodes duplicating parent way tags"
 msgstr "Punkte verdoppeln Merkmale der Elternlinie"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
-"kein Sprachkürzel in ''wikipedia''-Merkmal, "
-"''wikipedia''=''Sprache:Artikel'' wird empfohlen"
+"Wikipedia-Merkmal hat kein Sprachkürzel, "
+"''wikipedia''=''sprache:seitentitel'' nutzen"
 
-msgid "unknown language prefix in wikipedia tag"
-msgstr "unbekanntes Sprachkürzel in ''wikipedia''-Merkmal"
+msgid "wikipedia tag has an unknown language prefix"
+msgstr "Wikipedia-Merkmal hat einen unbekanntes Sprachkürzel."
 
-msgid "deprecated format for wikipedia tag"
-msgstr "Veraltetes Format für das Wikipedia-Merkmal"
+msgid "wikipedia tag format is deprecated"
+msgstr "Wikipedia-Merkmalsformat ist veraltet"
 
 msgid "''wikipedia''=''language:page title''"
 msgstr "''wikipedia''=''Sprache:Seitentitel''"
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr "Wikipedia-Sprache ''{0}'' ist veraltet, stattdessen ''{1}'' nutzen"
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr "Wikipedia-Sprache ''{0}'' ist ungültig, stattdessen ''{1}'' nutzen"
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr "{0}-Merkmal sollte keine URL-Kodierungswerte wie ''%27'' enthalten"
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+"Wikipediatitel sollte nach dem Sprachkürzel nicht mit einem Leerzeichen "
+"beginnen"
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr "Wikipediatitel sollte kein Präfix ''{0}'' haben"
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr "Wikipedia-Seitentitel sollte mit einem Großbuchstaben beginnen"
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+"Wikipedia-Seitentitel sollte Leerzeichen statt Unterstrichen haben (''_''→'' "
+"'')"
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr "Wikipedia-Sprache scheint verdoppelt, z.B. en:en:Foo"
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr "Wikidata-Merkmal muss im Qnnnn-Format sein (n = Zahl)"
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+"Wikipedia-Merkmal ist gesetzt, aber es gibt kein Wikidata-Merkmal. Das "
+"Wikipedia-Plugin hilft bei der Suche nach Wikidatawerten."
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+"Wikipedia-Merkmal ist nicht gesetzt, aber das Merkmal ''{0}''. Bitte "
+"sicherstellen, dass wikipedia=sprache:wert zusammen mit dem Wikidata-Merkmal "
+"genutzt wird."
+
 msgid "Hide icons at low zoom"
 msgstr "Symbole bei niedrigen Zoomstufen ausblenden"
 
@@ -27792,11 +27908,12 @@ msgstr "Bilder insgesamt:"
 msgid "images"
 msgstr "Bilder"
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
-msgstr "Verkehrszeichenschrift bei ''{0}'' hat falsches Format"
+msgid "Mapillary object layer"
+msgstr "Mapillary-Objektebene"
 
-msgid "Could not read font-file from ''{0}''"
-msgstr "Schriftartdatei von ''{0}'' konnte nicht gelesen werden"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
+msgstr ""
+"Zeigt die Ebene an, welche von Mapillary erkannte Kartenobjekte darstellt"
 
 msgid "Mapillary"
 msgstr "Mapillary"
@@ -27843,9 +27960,6 @@ msgstr "Verbindungsmodus"
 msgid "Join/unjoin pictures"
 msgstr "Bilder verbinden/trennen"
 
-msgid "Join Mapillary pictures"
-msgstr "Mapillary-Bilder verbinden"
-
 msgid "Submit changeset"
 msgstr "Änderungssatz absenden"
 
@@ -27883,9 +27997,6 @@ msgstr "Bilder hochladen."
 msgid "Walk mode"
 msgstr "Spaziergangmodus"
 
-msgid "Start walk mode"
-msgstr "Spaziergangmodus starten"
-
 msgid "Zoom to selected image"
 msgstr "Auf ausgewähltes Bild zoomen"
 
@@ -27991,18 +28102,18 @@ msgstr "Mapillary-Chronik"
 msgid "Open Mapillary history dialog"
 msgstr "Mapillary-Chronikdialog öffnen"
 
+msgid "No image selected"
+msgstr "Kein Bild ausgewählt"
+
+msgid "Press \"{0}\" to download images"
+msgstr "Zum Herunterladen von Bildern \"{0}\" drücken"
+
 msgid "Mapillary picture"
 msgstr "Mapillary-Bild"
 
 msgid "Open Mapillary window"
 msgstr "Mapillary Fenster öffnen"
 
-msgid "Mapillary dialog"
-msgstr "Mapillary-Dialog"
-
-msgid "Open Mapillary main dialog"
-msgstr "Mapillary-Hauptdialog öffnen"
-
 msgid "Next picture"
 msgstr "Nächstes Bild"
 
@@ -28055,6 +28166,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr "Beim Überfahren des Symbols Vorschaubilder anzeigen"
 
+msgid "Cut off sequences at download bounds"
+msgstr "Begrenzungssequenz der Herunterladegrenzen"
+
 msgid "Download mode"
 msgstr "Herunterlademodus"
 
@@ -28138,6 +28252,12 @@ msgstr ""
 "Angeige von detaillierten Informationen über das momentan ausgewählte "
 "Mapillary-Bild"
 
+msgid "View in browser"
+msgstr "Im Webbrowser ansehen"
+
+msgid "Copy key"
+msgstr "Schlüssel kopieren"
+
 msgid "Add Mapillary tag"
 msgstr "Mapillary-Tag hinzufügen"
 
@@ -28159,6 +28279,12 @@ msgstr "Sequenz hat keinen Schlüssel"
 msgid "Could not open the URL {0} in a browser"
 msgstr "Konnte die URL {0} nicht in einem Browser öffnen"
 
+msgid "Mapillary objects"
+msgstr "Mapillary-Objekte"
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr "Zeigt von Mapillary erkannte Objekte der Straßenansichtsbilder an"
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] "{0} Bild gelöscht"
@@ -28185,6 +28311,9 @@ msgstr[1] "{0} Bilder gedreht"
 msgid "2 images unjoined"
 msgstr "2 Bilder getrennt"
 
+msgid "Could not read map objects from URL {0}!"
+msgstr "Kartenobjekte der URL {0} nicht lesbar!"
+
 msgid "everything in the visible area"
 msgstr "alles im sichtbaren Bereich"
 
@@ -28201,6 +28330,9 @@ msgstr ""
 "Der heruntergeladene OSM-Bereich ist zu groß. Herunterlademodus wurde auf "
 "OSM-Bereich geändert, bis die Ebene neu gestartet wird."
 
+msgid "Could not read sequences from URL {0}!"
+msgstr "Konnte Sequenz von URL {0} nicht lesen!"
+
 msgid "Downloading"
 msgstr "Wird heruntergeladen"
 
@@ -28245,18 +28377,6 @@ msgstr "Nicht bei Mapillary angemeldet"
 msgid "Uploading: {0}"
 msgstr "Hachladevorgang: {0}"
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr "Der Bild-Schlüssel ''{0}'' ist ungültig!"
-
-msgid "The image key must not be null here!"
-msgstr "Der Bild-Schlüssel darf hier nicht leer sein!"
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr "Der Sequenz-Schlüssel ''{0}'' ist ungültig!"
-
-msgid "The sequence key must not be null here!"
-msgstr "Der Sequenz-Schlüssel darf hier nicht leer sein!"
-
 msgid "NanoLog"
 msgstr "NanoLog"
 
@@ -28862,6 +28982,9 @@ msgstr "Gebäude:"
 msgid "Tags:"
 msgstr "Schlagwörter:"
 
+msgid "Source:"
+msgstr "Quelle:"
+
 msgid "Name:"
 msgstr "Name:"
 
@@ -28895,6 +29018,11 @@ msgstr "Versuche eine Fläche zu erkennen bei:"
 msgid "Created area"
 msgstr "Fläche erzeugt"
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] "Adresse hinzufügen"
+msgstr[1] "Adressen hinzufügen"
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr "Es kann kein Polygon vom Klickpunkt ermittelt werden."
 
@@ -28996,7 +29124,17 @@ msgid "merge nodes"
 msgstr "Punkte zusammenführen"
 
 msgid "Merge nodes with existing nodes"
-msgstr "Knotenpunkte mit vorhandenen Knotenpunkten zusammenführen"
+msgstr "Punkte mit vorhandenen Punkten zusammenführen"
+
+msgid "use austria address helper"
+msgstr "Adresshelfer Österreich verwenden"
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+"Versuche automatisch die korrekte Adresse mittels der Adresshelfer "
+"Österreich Erweiterung zu finden"
 
 msgid "Debug"
 msgstr "Fehlerdiagnose"
@@ -29006,6 +29144,24 @@ msgstr ""
 "Im Fehleranalysemodus wird ein Bild für jeden Bearbeitungsschritt "
 "geschrieben."
 
+msgid "Fetch Address"
+msgstr "Adressen holen"
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr "Adresshelfer Österreich<br>Bitte genau ein Objekt auswählen."
+
+msgid "Austria Address Helper"
+msgstr "Österreich-Adresshelfer"
+
+msgid "Successfully added address to selected object:"
+msgstr "Adresse erfolgreich zum ausgewählten Objekt hinzugefügt:"
+
+msgid "No address was found for this object."
+msgstr "Für dieses Objekt wurde keine Adresse gefunden."
+
+msgid "An unexpected exception occurred:"
+msgstr "Eine unvorhergesehene Fehlersituation trat auf:"
+
 msgid "Building Generalization"
 msgstr "Gebäudegeneralisierung"
 
@@ -29111,9 +29267,6 @@ msgstr "Keine Adresspunkte im Gebäude gefunden"
 msgid "on polygon"
 msgstr "Auf Polygon"
 
-msgid "Add address"
-msgstr "Adresse hinzufügen"
-
 msgid "Helping tool for tag address"
 msgstr "Hilfsmittel für Adressenerfassung"
 
@@ -29762,14 +29915,6 @@ msgstr "Das ausgewählte Farbschema aus der Liste löschen."
 msgid "Color Schemes"
 msgstr "Farbschemata"
 
-msgid "Conflate object pair"
-msgstr "Objektpaar zusammenführen"
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] "{0} Objekt zur Ziel-Ebene hinzugefügt"
-msgstr[1] "{0} Objekte zur Ziel-Ebene hinzugefügt"
-
 msgid "Conflation"
 msgstr "Zusammenführung"
 
@@ -29800,15 +29945,12 @@ msgstr "Einstellen"
 msgid "Configure conflation options"
 msgstr "Zusammenführungsoptionen konfigurieren"
 
-msgid "Delete {0} conflation matches"
-msgstr "{0} Zusammenführungen löschen"
-
-msgid "Remove {0} unmatched objects"
-msgstr "{0} nicht zusammengeführte Objekte löschen"
-
 msgid "Remove selected matches"
 msgstr "Ausgewählte Übereinstimmungen entfernen"
 
+msgid "Remove ({0})"
+msgstr "Entfernen ({0})"
+
 msgid "Conflate"
 msgstr "Zusammenführen"
 
@@ -29818,8 +29960,11 @@ msgstr "Ausgewählte Objekte zusammenführen"
 msgid "Conflation: {0}"
 msgstr "Zusammenführung: {0}"
 
-msgid "Cannot replace geometry."
-msgstr "Geometrie kann nicht ersetzt werden."
+msgid "Conflate {0} objects"
+msgstr "{0} Objekte zusammenführen"
+
+msgid "Conflate ({0})"
+msgstr "Zusammenführen ({0})"
 
 msgid "Zoom to selected primitive(s)"
 msgstr "Auf ausgewählte Objekte zoomen"
@@ -29830,23 +29975,138 @@ msgstr "Ausgewählte Objekte auswählen"
 msgid "Select the primitives currently selected in the list"
 msgstr "Objekte auswählen, welche derzeit in der Liste ausgewählt sind"
 
-msgid "Match finder settings"
-msgstr "Übereinstimmungssuch-Einstellungen"
+msgid "Generating matches"
+msgstr "Übereinstimmungen ermitteln"
+
+msgid "Finding matches"
+msgstr "Übereinstimmungen finden"
+
+msgid "Sorting scores"
+msgstr "Bewertungen sortieren"
+
+msgid "Discarding inferior matches"
+msgstr "Treffer minderer Qualität entfernen"
+
+msgid "Subject"
+msgstr "Ziel"
+
+msgid "Conflate object pair"
+msgstr "Objektpaar zusammenführen"
+
+msgid "Cannot replace geometry."
+msgstr "Geometrie kann nicht ersetzt werden."
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] "{0} Objekt zur Ziel-Ebene hinzugefügt"
+msgstr[1] "{0} Objekte zur Ziel-Ebene hinzugefügt"
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+"{0} Zusammenführung in Liste der nicht übereinstimmenden verschoben"
+msgstr[1] ""
+"{0} Zusammenführungen in Liste der nicht übereinstimmenden verschoben"
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] "{0} Zusammenführung löschen"
+msgstr[1] "{0} Zusammenführungen löschen"
+
+msgid "Remove {0} unmatched objects"
+msgstr "{0} nicht zusammengeführte Objekte löschen"
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr "Unterbrochene Sequenz ({0}/{1}): {2}"
+
+msgid " Max: "
+msgstr " Max: "
+
+msgid "Filter by area. Min: "
+msgstr "Nach Gebiet filtern. Min: "
+
+msgid "Filter by window. Buffer: "
+msgstr "Nach Fenster filtern. Puffer: "
+
+msgid "Union up to "
+msgstr "Vereinigung bis zu "
+
+msgid " adjacent Reference features"
+msgstr " benachbarte Referenz-Elemente"
 
-msgid "Match finder method"
-msgstr "Übereinstimmungssuch-Methode"
+msgid "Weight"
+msgstr "Gewicht"
+
+msgid "Standard Distance"
+msgstr "Standardentfernung"
 
-msgid "Threshold distance"
-msgstr "Schwellenwertabstand"
+msgid "below"
+msgstr "unter"
 
-msgid "Distances greater than this will result in a score of zero."
-msgstr "Eine größere Distanz resultiert in einer Bewertung von Null."
+msgid "Maximum Distance"
+msgstr "Maximale Entfernung"
 
-msgid "Centroid distance"
+msgid "Centroid Distance"
 msgstr "Zentroid-Distanz"
 
-msgid "Hausdorff distance"
-msgstr "Hausdorff-Distanz"
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr "Hausdorff-Distanz (Zentroiden ausgerichtet)"
+
+msgid "Symmetric Difference"
+msgstr "Symmetrische Differenz"
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr "Symmetrische Differenz (Zentroiden ausgerichtet)"
+
+msgid "Compactness"
+msgstr "Kompaktheit"
+
+msgid "Angle Histogram. Bins: "
+msgstr "Winkelhistogramm. Behältnisse: "
+
+msgid "Tags (Exact Match): "
+msgstr "Merkmale (exakte Übereinstimmung): "
+
+msgid "Tags (Levenshtein Distance): "
+msgstr "Merkmale (Levenshtein-Distanz): "
+
+msgid "List of tags to match"
+msgstr "Liste der in Übereinstimmung zu bringenden Merkmale"
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+"Filterung beschleunigt das Finden von Übereinstimmungen. Der Fenster-Filter "
+"sortiert Übereinstimmungen zwischen Elementen aus, deren Hüllkurven nicht "
+"überlappen. Der Gebiets-Filter wird verwendet, um sehr kleine und sehr große "
+"Elemente auszusortieren."
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
+"Durch die Bildung temporärer Vereinigungen von Elementen, die sich eine "
+"gemeinsame Kante teilen, können bessere Übereinstimmungen gefunden werden."
+
+msgid "Matching"
+msgstr "Abgleich"
+
+msgid "Filtering"
+msgstr "Filterung"
+
+msgid "Unioning"
+msgstr "Vereinigungsbildung"
+
+msgid "Simple Example"
+msgstr "Einfaches Beispiel"
+
+msgid "Advanced Example"
+msgstr "Erweitertes Beispiel"
+
+msgid "<Please select data>"
+msgstr "<Bitte Daten auswählen>"
 
 msgid "Configure conflation settings"
 msgstr "Zusammenführungseinstellungen konfigurieren"
@@ -29854,14 +30114,32 @@ msgstr "Zusammenführungseinstellungen konfigurieren"
 msgid "Generate matches"
 msgstr "Übereinstimmungen erzeugen"
 
-msgid "Layer:"
-msgstr "Ebene:"
+msgid "Reference:"
+msgstr "Referenz:"
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
-msgstr "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
+msgstr "Betreff:"
 
-msgid "Subject"
-msgstr "Ziel"
+msgid "Programming"
+msgstr "Programmierung"
+
+msgid "Merging"
+msgstr "Wird zusammengeführt"
+
+msgid "Replace Geometry"
+msgstr "Geometrie ersetzen"
+
+msgid "Merge Tags"
+msgstr "Merkmale zusammenführen"
+
+msgid "List of tags to merge"
+msgstr "Liste der zu zusammenführenden Merkmale"
+
+msgid "Overwrite tags without confirmation"
+msgstr "Merkmale ohne Bestätigung überschreiben"
+
+msgid "List of tags to overwrite without confirmation"
+msgstr "Liste von Merkmalen, die ohne Nachfrage überschrieben werden"
 
 msgid "Selections must be made for both reference and subject."
 msgstr "Sowohl Referenz- als auch Ziel-Objekte müssen ausgewählt werden."
@@ -29893,11 +30171,27 @@ msgstr "Leere Auswahl"
 msgid "Freeze reference selection"
 msgstr "Referenzauswahl fixieren"
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
-msgstr "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr "Wird eindeutig gemacht"
+
+msgid "One to One"
+msgstr "Eins zu Eins"
+
+msgid "Distance"
+msgstr "Entfernung"
+
+msgid "Standard"
+msgstr "Standard"
+
+msgid "Centroid"
+msgstr "Zentroid"
+
+msgid "Hausdorff"
+msgstr "Hausdorff"
 
-msgid "Invalid reference or subject"
-msgstr "Ungültige Referenz / ungültiges Ziel"
+msgid "List of tags to match (default: none)"
+msgstr ""
+"Liste von in Übereinstimmung zu bringenden Merkmalen (Standard: keine)"
 
 msgid "Download OSM data continuously"
 msgstr "OSM-Daten kontinuierlich herunterladen"
@@ -31013,6 +31307,33 @@ msgstr "Vektorgrafiken importieren"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "SVG-Dateien [ImportVec-Erweiterung] (*.svg)"
 
+msgid "Improve Way"
+msgstr "Linie verbessern"
+
+msgid "Improve Way mode"
+msgstr "Linienverbesserungsmodus"
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr "Modus: Aktiviere Liniengenauigkeit-Helfer"
+
+msgid "improve way accuracy helper turn angle text"
+msgstr "Liniengenauigkeit-Verbesserungs-Helfer Abbiegewinkeltext"
+
+msgid "improve way accuracy helper distance text"
+msgstr "Liniengenauigkeit-Verbesserungs-Helfer Abstandstext"
+
+msgid "improve way accuracy helper arc fill"
+msgstr "Liniengenauigkeit-Verbesserungs-Helfer Bogenfüllung"
+
+msgid "improve way accuracy helper arc stroke"
+msgstr "Liniengenauigkeit-Verbesserungs-Helfer Bogenstrich"
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr "Liniengenauigkeit-Verbesserungs-Helfer senkrechte Linie"
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr "Liniengenauigkeit-Verbesserungs-Helfer Kreis mit gleichem Winkel"
+
 msgid "Concourse wizard ..."
 msgstr "Hallen-Assistent …"
 
@@ -31259,10 +31580,10 @@ msgid "Direction of river is wrong."
 msgstr "Richtung des Flusses ist falsch."
 
 msgid "<HTML><U>I</U>gnore this way</HTML>"
-msgstr "<HTML><U>D</U>iesen Weg ignorieren</HTML>"
+msgstr "<HTML><U>D</U>iese Linie ignorieren</HTML>"
 
 msgid "Ignore direction of this way."
-msgstr "Richtung von diesem Weg ignorieren."
+msgstr "Richtung von dieser Linie ignorieren."
 
 msgid "Check direction of streams"
 msgstr "Richtung von Bachen überprüfen"
@@ -31274,13 +31595,10 @@ msgid "No more directions to check!"
 msgstr "Keine weiteren Richtungen zum Überprüfen!"
 
 msgid "Replace way"
-msgstr "Weg ersetzen"
+msgstr "Linie ersetzen"
 
 msgid "Replace way of selected way with a new way"
-msgstr "Weg des ausgewählten Weges mit einem neuen Weg ersetzen"
-
-msgid "Replace Geometry"
-msgstr "Geometrie ersetzen"
+msgstr "Linie der ausgewählten Linie mit einer neuen Linie ersetzen"
 
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
@@ -32631,9 +32949,6 @@ msgstr "GPS-Daten des Fotos bearbeiten"
 msgid "Please select an image first."
 msgstr "Bitte wählen Sie zuerst ein Bild aus."
 
-msgid "No image selected"
-msgstr "Kein Bild ausgewählt"
-
 msgid "(Empty values delete the according fields.)"
 msgstr "(Leere Werte löschen die entsprechenden Felder.)"
 
@@ -33041,10 +33356,10 @@ msgid "PT_Assistant Proceed Request"
 msgstr "PT_Assistant Fahranforderung"
 
 msgid "PT: Stop_position is not part of a way"
-msgstr "ÖV: Haltepunkt ist nicht Teil eines Weges"
+msgstr "ÖV: Haltepunkt ist nicht Teil einer Linie"
 
 msgid "PT: Platform should not be part of a way"
-msgstr "ÖV: Plattform sollte nicht Teil eines Weges sein"
+msgstr "ÖV: Plattform sollte nicht Teil einer Linie sein"
 
 msgid "PT: Stop position or platform is not part of a stop area relation"
 msgstr ""
@@ -33079,7 +33394,7 @@ msgid "PT: Route should start and end with a stop_position"
 msgstr "ÖV: Route sollte mit einem Halteplatz beginnen und enden"
 
 msgid "PT: First or last way needs to be split"
-msgstr "ÖV: Erster oder letzter Weg muss aufgeteilt werden"
+msgstr "ÖV: Erste oder letzte Linie muss aufgeteilt werden"
 
 msgid "PT: Stop not served"
 msgstr "ÖV: Haltestelle nicht bedient"
@@ -33656,6 +33971,12 @@ msgstr ""
 "Achtung: nicht unterstütztes Endelement »{0}« im Inhalt des Änderungssatzes "
 "an der Position ({1},{2}) wird übersprungen."
 
+msgid "Create Roundabout"
+msgstr "Kreisverkehr erstellen"
+
+msgid "Roundabout Expander"
+msgstr "Kreisverkehr-Erweiterer"
+
 msgid "Road Sign Plugin"
 msgstr "Verkehrszeichenerweiterung"
 
@@ -33785,9 +34106,6 @@ msgstr "Routenführung konfigurieren."
 msgid "Speed (Km/h)"
 msgstr "Geschwindigkeit (km/h)"
 
-msgid "Weight"
-msgstr "Gewicht"
-
 msgid "Enter weight values"
 msgstr "Gewichtswerte eingeben"
 
@@ -34085,7 +34403,7 @@ msgid "Curve steps"
 msgstr "Kurvenschritte"
 
 msgid "Undelete node {0}"
-msgstr "Knoten {0} wiederherstellen"
+msgstr "Punkt {0} wiederherstellen"
 
 msgid "OSM Export"
 msgstr "OSM-Export"
diff --git a/i18n/po/de_DE.po b/i18n/po/de_DE.po
index b68cfba..0fb7685 100644
--- a/i18n/po/de_DE.po
+++ b/i18n/po/de_DE.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2011-07-10 12:32+0000\n"
 "Last-Translator: ralekuja <Unknown>\n"
 "Language-Team: German (Germany) <de_DE at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:25+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:20+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1397,7 +1397,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7927,6 +7927,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9241,6 +9247,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14459,6 +14468,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14467,6 +14484,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14912,6 +14933,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14924,9 +14957,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14939,6 +14978,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15730,10 +15772,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15853,7 +15895,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16180,6 +16222,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16212,7 +16259,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16332,6 +16379,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16500,6 +16552,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24842,6 +24899,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24972,18 +25032,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25582,10 +25681,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25633,9 +25732,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25667,9 +25763,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25775,16 +25868,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25838,6 +25931,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25906,6 +26002,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25927,6 +26029,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25953,6 +26061,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25967,6 +26078,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26009,18 +26123,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26517,6 +26619,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26550,6 +26655,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26637,12 +26747,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26743,9 +26879,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27326,14 +27459,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27364,13 +27489,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27382,7 +27504,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27394,22 +27519,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27418,13 +27650,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27457,10 +27707,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28488,6 +28753,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28739,9 +29031,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29983,9 +30272,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30966,6 +31252,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31095,9 +31387,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/el.po b/i18n/po/el.po
index 221f94e..cd427ef 100644
--- a/i18n/po/el.po
+++ b/i18n/po/el.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2016-01-25 09:17+0000\n"
 "Last-Translator: Aggelos Arnaoutis <angelosarn at hotmail.com>\n"
 "Language-Team: Greek <el at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:52+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:50+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: el\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1492,8 +1492,8 @@ msgstr "Σχεδιασμός γραμμών ανάμεσα σε ακατέργα
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
-msgstr "Ενθάρρυνση /αποθάρρυνση αποστολής"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "Αποσύνδεση Διαδρομών"
@@ -8182,6 +8182,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9549,6 +9555,9 @@ msgstr "Έκδοση API: {0}"
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Μετατροπή σε επίπεδο GPX"
 
@@ -14840,6 +14849,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "Οικιστική"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "θαμνότοπος"
@@ -14848,6 +14865,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -15293,6 +15314,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -15305,9 +15338,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -15320,6 +15359,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -16111,10 +16153,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -16234,7 +16276,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16561,6 +16603,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16593,7 +16640,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16713,6 +16760,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr "Εισαγωγή διανυσματικών γραφικών (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16881,6 +16933,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -25226,6 +25283,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -25356,18 +25416,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25968,10 +26067,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -26019,9 +26118,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -26053,9 +26149,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -26161,16 +26254,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -26224,6 +26317,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -26292,6 +26388,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -26313,6 +26415,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -26339,6 +26447,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -26353,6 +26464,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26395,18 +26509,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26905,6 +27007,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "Όνομα:"
 
@@ -26938,6 +27043,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -27025,12 +27135,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -27131,9 +27267,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr "Προσθήκη διεύθυνσης"
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27715,14 +27848,6 @@ msgstr "Διαγραφή του επιλεγμένου θέματος από τ
 msgid "Color Schemes"
 msgstr "Θέματα χρωμάτων"
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27753,13 +27878,10 @@ msgstr "Ρύθμιση"
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27771,7 +27893,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27783,22 +27908,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27807,13 +28039,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Αντικατάσταση Γεωμετρίας"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27846,10 +28096,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28883,6 +29148,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -29134,9 +29426,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr "Αντικατάσταση Γεωμετρίας"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -30394,9 +30683,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -31380,6 +31666,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31509,9 +31801,6 @@ msgstr "Ρύθμιση προτιμήσεων δρομολόγησης"
 msgid "Speed (Km/h)"
 msgstr "Ταχύτητα (ΧΑΩ)"
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/en_AU.po b/i18n/po/en_AU.po
index 67f015f..0a54a33 100644
--- a/i18n/po/en_AU.po
+++ b/i18n/po/en_AU.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2015-06-08 12:52+0000\n"
 "Last-Translator: Mark Pulley <mrpulley at lizzy.com.au>\n"
 "Language-Team: English (Australia) <en_AU at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:23+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:18+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1483,8 +1483,8 @@ msgstr "Draw lines between raw gps points."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Toggles the global setting ''{0}''."
 
-msgid "Encourage/discourage upload"
-msgstr "Encourage/discourage upload"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "UnGlue Ways"
@@ -8402,6 +8402,12 @@ msgstr ""
 "<html>Autostart ''Download from OSM'' dialogue every time JOSM is "
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9855,6 +9861,9 @@ msgstr "API version: {0}"
 msgid "Upload is discouraged"
 msgstr "Upload is discouraged"
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Convert to GPX layer"
 
@@ -15390,6 +15399,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -15398,6 +15415,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -15843,6 +15864,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -15855,9 +15888,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -15870,6 +15909,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -16661,10 +16703,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -16784,7 +16826,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -17113,6 +17155,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -17145,7 +17192,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -17274,6 +17321,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -17453,6 +17505,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -25803,6 +25860,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -25933,18 +25993,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -26547,10 +26646,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -26598,9 +26697,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -26632,9 +26728,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -26740,16 +26833,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -26803,6 +26896,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -26871,6 +26967,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -26892,6 +26994,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -26918,6 +27026,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -26932,6 +27043,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26974,18 +27088,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -27483,6 +27585,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -27516,6 +27621,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -27603,12 +27713,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -27709,9 +27845,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -28332,14 +28465,6 @@ msgstr "Delete the selected scheme from the list."
 msgid "Color Schemes"
 msgstr "Colour Schemes"
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -28370,13 +28495,10 @@ msgstr "Configure"
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -28388,7 +28510,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -28400,22 +28525,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Weight"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
 msgstr ""
 
-msgid "Match finder method"
+msgid "Symmetric Difference (Centroids Aligned)"
 msgstr ""
 
-msgid "Threshold distance"
+msgid "Compactness"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid "Angle Histogram. Bins: "
 msgstr ""
 
-msgid "Centroid distance"
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
+msgstr ""
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
+
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -28424,13 +28656,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -28463,10 +28713,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -29500,6 +29765,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -29751,9 +30043,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -31011,9 +31300,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -31998,6 +32284,12 @@ msgstr ""
 "Warning: unsupported end element ''{0}'' in changeset content at position "
 "({1},{2}). Skipping."
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -32127,9 +32419,6 @@ msgstr "Configure routing preferences."
 msgid "Speed (Km/h)"
 msgstr "Speed (Km/h)"
 
-msgid "Weight"
-msgstr "Weight"
-
 msgid "Enter weight values"
 msgstr "Enter weight values"
 
diff --git a/i18n/po/en_CA.po b/i18n/po/en_CA.po
index 2d1f394..a332412 100644
--- a/i18n/po/en_CA.po
+++ b/i18n/po/en_CA.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2010-09-24 17:25+0000\n"
 "Last-Translator: Johann Beda <Unknown>\n"
 "Language-Team: English (Canada) <en_CA at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:26+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:21+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1394,7 +1394,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7924,6 +7924,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9238,6 +9244,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14453,6 +14462,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14461,6 +14478,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14906,6 +14927,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14918,9 +14951,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14933,6 +14972,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15724,10 +15766,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15847,7 +15889,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16174,6 +16216,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16206,7 +16253,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16326,6 +16373,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16494,6 +16546,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24836,6 +24893,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24966,18 +25026,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25576,10 +25675,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25627,9 +25726,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25661,9 +25757,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25769,16 +25862,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25832,6 +25925,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25900,6 +25996,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25921,6 +26023,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25947,6 +26055,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25961,6 +26072,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26003,18 +26117,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26511,6 +26613,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26544,6 +26649,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26631,12 +26741,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26737,9 +26873,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27316,14 +27449,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27354,13 +27479,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27372,7 +27494,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27384,22 +27509,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27408,13 +27640,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27447,10 +27697,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28478,6 +28743,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28729,9 +29021,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29973,9 +30262,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30956,6 +31242,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31085,9 +31377,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/en_GB.po b/i18n/po/en_GB.po
index e56ad2f..85f9670 100644
--- a/i18n/po/en_GB.po
+++ b/i18n/po/en_GB.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: JOSM\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2016-11-01 11:03+0000\n"
 "Last-Translator: Andi Chandler <Unknown>\n"
 "Language-Team: German <josm-dev at openstreetmap.org>\n"
@@ -18,8 +18,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:23+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:18+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: de\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1486,8 +1486,8 @@ msgstr "Draw lines between raw gps points."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Toggles the global setting ''{0}''."
 
-msgid "Encourage/discourage upload"
-msgstr "Encourage/discourage upload"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "UnGlue Ways"
@@ -8442,6 +8442,12 @@ msgstr ""
 "<html>Autostart ''Download from OSM'' dialogue every time JOSM is "
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9899,6 +9905,9 @@ msgstr "API version: {0}"
 msgid "Upload is discouraged"
 msgstr "Upload is discouraged"
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Convert to GPX layer"
 
@@ -15707,6 +15716,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "residential"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "scrub"
@@ -15715,6 +15732,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr "wood"
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "associatedStreet"
@@ -16160,6 +16181,18 @@ msgstr "VoGIS: Höhen und Gelände"
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -16172,9 +16205,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr numerical imagery (2013)"
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr "URBISnl numerical imagery (2013)"
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr "URBIS 2009 aerial imagery"
 
@@ -16187,6 +16226,9 @@ msgstr "URBIS 2014 aerial imagery"
 msgid "URBIS 2015 aerial imagery"
 msgstr "URBIS 2015 aerial imagery"
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr "SPW(allonie) PICC numerical imagery"
 
@@ -16980,10 +17022,10 @@ msgstr "Stadt Zürich Übersichtsplan (Strassen, Gebäude, Hausnummer)"
 msgid "Stadt Zürich Luftbild 2011"
 msgstr "Stadt Zürich Luftbild 2011"
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
-msgstr "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
+msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -17103,7 +17145,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -17441,6 +17483,11 @@ msgstr ""
 "for basemap.at."
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -17483,8 +17530,8 @@ msgstr ""
 "Implements a command line and enables to create your commands. See link for "
 "standard commands (arc, circle etc.)"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
-msgstr "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
+msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
 msgstr "Downloads new data when you pan/zoom"
@@ -17625,6 +17672,11 @@ msgstr "Plugin for importing spatial referenced images"
 msgid "Import vector graphics (SVG)"
 msgstr "Import vector graphics (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr "This plugin simplifies the mapping and editing of indoor corridors."
 
@@ -17834,6 +17886,11 @@ msgid "Plugin for reverting changesets"
 msgstr "Plugin for reverting changesets"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -26285,6 +26342,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr "abbreviated street name"
 
@@ -26421,19 +26481,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr "Nodes duplicating parent way tags"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
 
-msgid "unknown language prefix in wikipedia tag"
-msgstr "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
+msgstr ""
 
-msgid "deprecated format for wikipedia tag"
-msgstr "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
+msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr "''wikipedia''=''language:page title''"
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr "Hide icons at low zoom"
 
@@ -27057,11 +27155,11 @@ msgstr "Total images:"
 msgid "images"
 msgstr "images"
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
-msgstr "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
+msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
-msgstr "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
+msgstr ""
 
 msgid "Mapillary"
 msgstr "Mapillary"
@@ -27108,9 +27206,6 @@ msgstr "Join mode"
 msgid "Join/unjoin pictures"
 msgstr "Join/unjoin pictures"
 
-msgid "Join Mapillary pictures"
-msgstr "Join Mapillary pictures"
-
 msgid "Submit changeset"
 msgstr "Submit changeset"
 
@@ -27142,9 +27237,6 @@ msgstr "Upload pictures."
 msgid "Walk mode"
 msgstr "Walk mode"
 
-msgid "Start walk mode"
-msgstr "Start walk mode"
-
 msgid "Zoom to selected image"
 msgstr "Zoom to selected image"
 
@@ -27250,18 +27342,18 @@ msgstr "Mapillary history"
 msgid "Open Mapillary history dialog"
 msgstr "Open Mapillary history dialog"
 
+msgid "No image selected"
+msgstr "No image selected"
+
+msgid "Press \"{0}\" to download images"
+msgstr ""
+
 msgid "Mapillary picture"
 msgstr "Mapillary picture"
 
 msgid "Open Mapillary window"
 msgstr "Open Mapillary window"
 
-msgid "Mapillary dialog"
-msgstr "Mapillary dialog"
-
-msgid "Open Mapillary main dialog"
-msgstr "Open Mapillary main dialog"
-
 msgid "Next picture"
 msgstr "Next picture"
 
@@ -27313,6 +27405,9 @@ msgstr "Move to picture''s location with next/previous buttons"
 msgid "Preview images when hovering its icon"
 msgstr "Preview images when hovering its icon"
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr "Download mode"
 
@@ -27381,6 +27476,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -27402,6 +27503,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] "Deleted {0} image"
@@ -27428,6 +27535,9 @@ msgstr[1] "Turned {0} images"
 msgid "2 images unjoined"
 msgstr "2 images unjoined"
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr "everything in the visible area"
 
@@ -27442,6 +27552,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr "Downloading"
 
@@ -27484,18 +27597,6 @@ msgstr "Not Logged in to Mapillary"
 msgid "Uploading: {0}"
 msgstr "Uploading: {0}"
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr "The image key ''{0}'' is invalid!"
-
-msgid "The image key must not be null here!"
-msgstr "The image key must not be null here!"
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr "The sequence key ''{0}'' is invalid!"
-
-msgid "The sequence key must not be null here!"
-msgstr "The sequence key must not be null here!"
-
 msgid "NanoLog"
 msgstr "NanoLog"
 
@@ -28093,6 +28194,9 @@ msgstr "Building:"
 msgid "Tags:"
 msgstr "Tags:"
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "Name:"
 
@@ -28126,6 +28230,11 @@ msgstr ""
 msgid "Created area"
 msgstr "Created area"
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr "Unable to detect a polygon where you clicked."
 
@@ -28223,12 +28332,38 @@ msgstr "merge nodes"
 msgid "Merge nodes with existing nodes"
 msgstr "Merge nodes with existing nodes"
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr "Debug"
 
 msgid "Debugging mode will write images for each processing step."
 msgstr "Debugging mode will write images for each processing step."
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -28329,9 +28464,6 @@ msgstr "No address nodes inside buildings found"
 msgid "on polygon"
 msgstr "on polygon"
 
-msgid "Add address"
-msgstr "Add address"
-
 msgid "Helping tool for tag address"
 msgstr "Helping tool for tag address"
 
@@ -28962,14 +29094,6 @@ msgstr "Delete the selected scheme from the list."
 msgid "Color Schemes"
 msgstr "Colour Schemes"
 
-msgid "Conflate object pair"
-msgstr "Conflate object pair"
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] "Added {0} object to subject layer"
-msgstr[1] "Added {0} objects to subject layer"
-
 msgid "Conflation"
 msgstr "Conflation"
 
@@ -29000,15 +29124,12 @@ msgstr "Configure"
 msgid "Configure conflation options"
 msgstr "Configure conflation options"
 
-msgid "Delete {0} conflation matches"
-msgstr "Delete {0} conflation matches"
-
-msgid "Remove {0} unmatched objects"
-msgstr "Remove {0} unmatched objects"
-
 msgid "Remove selected matches"
 msgstr "Remove selected matches"
 
+msgid "Remove ({0})"
+msgstr ""
+
 msgid "Conflate"
 msgstr "Conflate"
 
@@ -29018,8 +29139,11 @@ msgstr "Conflate selected objects"
 msgid "Conflation: {0}"
 msgstr "Conflation: {0}"
 
-msgid "Cannot replace geometry."
-msgstr "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
+msgstr ""
 
 msgid "Zoom to selected primitive(s)"
 msgstr "Zoom to selected primitive(s)"
@@ -29030,23 +29154,130 @@ msgstr "Select selected primitive(s)"
 msgid "Select the primitives currently selected in the list"
 msgstr "Select the primitives currently selected in the list"
 
-msgid "Match finder settings"
-msgstr "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr "Subject"
+
+msgid "Conflate object pair"
+msgstr "Conflate object pair"
+
+msgid "Cannot replace geometry."
+msgstr "Cannot replace geometry."
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] "Added {0} object to subject layer"
+msgstr[1] "Added {0} objects to subject layer"
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr "Remove {0} unmatched objects"
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
 
-msgid "Match finder method"
-msgstr "Match finder method"
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Weight"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
 
-msgid "Threshold distance"
-msgstr "Threshold distance"
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
+msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
-msgstr "Distances greater than this will result in a score of zero."
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
+msgstr ""
 
-msgid "Centroid distance"
-msgstr "Centroid distance"
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
 
-msgid "Hausdorff distance"
-msgstr "Hausdorff distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
+
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
+msgstr ""
 
 msgid "Configure conflation settings"
 msgstr "Configure conflation settings"
@@ -29054,14 +29285,32 @@ msgstr "Configure conflation settings"
 msgid "Generate matches"
 msgstr "Generate matches"
 
-msgid "Layer:"
-msgstr "Layer:"
+msgid "Reference:"
+msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
-msgstr "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
+msgstr ""
 
-msgid "Subject"
-msgstr "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Replace Geometry"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
+msgstr ""
 
 msgid "Selections must be made for both reference and subject."
 msgstr "Selections must be made for both reference and subject."
@@ -29093,11 +29342,26 @@ msgstr "Empty selection"
 msgid "Freeze reference selection"
 msgstr "Freeze reference selection"
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
-msgstr "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
 
-msgid "Invalid reference or subject"
-msgstr "Invalid reference or subject"
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
+msgstr ""
+
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
+msgstr ""
 
 msgid "Download OSM data continuously"
 msgstr "Download OSM data continuously"
@@ -30192,6 +30456,33 @@ msgstr "Import vector graphics"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "SVG files [ImportVec plugin] (*.svg)"
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr "Concourse wizard ..."
 
@@ -30455,9 +30746,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr "Replace Geometry"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -31767,9 +32055,6 @@ msgstr "Edit Photo GPS Data"
 msgid "Please select an image first."
 msgstr "Please select an image first."
 
-msgid "No image selected"
-msgstr "No image selected"
-
 msgid "(Empty values delete the according fields.)"
 msgstr "(Empty values delete the according fields.)"
 
@@ -32769,6 +33054,12 @@ msgstr ""
 "Warning: unsupported end element ''{0}'' in changeset content at position "
 "({1},{2}). Skipping."
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr "Road Sign Plugin"
 
@@ -32898,9 +33189,6 @@ msgstr "Configure routing preferences."
 msgid "Speed (Km/h)"
 msgstr "Speed (Km/h)"
 
-msgid "Weight"
-msgstr "Weight"
-
 msgid "Enter weight values"
 msgstr "Enter weight values"
 
diff --git a/i18n/po/eo.po b/i18n/po/eo.po
index e9a36c0..b79ff99 100644
--- a/i18n/po/eo.po
+++ b/i18n/po/eo.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2016-09-21 04:23+0000\n"
 "Last-Translator: Yuri Tretyakov <Unknown>\n"
 "Language-Team: Esperanto <eo at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:45+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:44+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: eo\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1395,7 +1395,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7925,6 +7925,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9239,6 +9245,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14458,6 +14467,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14466,6 +14483,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14911,6 +14932,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14923,9 +14956,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14938,6 +14977,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15729,10 +15771,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15852,7 +15894,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16179,6 +16221,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16211,7 +16258,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16331,6 +16378,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16499,6 +16551,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24841,6 +24898,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24971,18 +25031,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25581,10 +25680,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25632,9 +25731,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25666,9 +25762,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25774,16 +25867,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25837,6 +25930,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25905,6 +26001,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25926,6 +26028,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25952,6 +26060,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25966,6 +26077,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26008,18 +26122,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26516,6 +26618,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26549,6 +26654,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26636,12 +26746,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26742,9 +26878,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27321,14 +27454,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27359,13 +27484,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27377,7 +27499,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27389,22 +27514,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27413,13 +27645,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27452,10 +27702,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28483,6 +28748,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28734,9 +29026,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29978,9 +30267,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30961,6 +31247,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31090,9 +31382,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/es.po b/i18n/po/es.po
index 88bad82..d75c8b6 100644
--- a/i18n/po/es.po
+++ b/i18n/po/es.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
-"PO-Revision-Date: 2017-02-26 09:44+0000\n"
-"Last-Translator: Omar Vega <ovruni at gnu.org.pe>\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
+"PO-Revision-Date: 2017-03-06 00:25+0000\n"
+"Last-Translator: mor <Unknown>\n"
 "Language-Team: Spanish <es at li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:15+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:11+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: es\n"
 "X-Language: es_ES\n"
 "X-Source-Language: C\n"
@@ -1521,8 +1521,8 @@ msgstr "Dibujar lineas entre puntos obtenidos de los datos en bruto del GPS."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Cambiar de estado el ajuste global ''{0}''."
 
-msgid "Encourage/discourage upload"
-msgstr "Permitir/prohibir carga"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "Despegar vías"
@@ -4534,7 +4534,7 @@ msgid "Way contains segment twice"
 msgstr "La vía contiene el mismo segmento 2 veces"
 
 msgid "Power lines"
-msgstr "Líneas eléctrticas"
+msgstr "Líneas eléctricas"
 
 msgid ""
 "Checks for nodes in power lines that do not have a power=tower/pole tag."
@@ -4563,7 +4563,7 @@ msgid "Relation checker"
 msgstr "Comprobación de relaciones"
 
 msgid "Checks for errors in relations."
-msgstr "Buscar errores en las relaciones"
+msgstr "Busca errores en las relaciones."
 
 msgid ""
 "Route scheme is unspecified. Add {0} ({1}=public_transport; {2}=legacy)"
@@ -4625,7 +4625,7 @@ msgstr ""
 "Este test busca vías con nombres similares que podrían haberse escrito mal."
 
 msgid "Tag checker"
-msgstr "Corrector de etiquetas"
+msgstr "Comprobador de etiquetas"
 
 msgid "Adding {0} to ignore tags"
 msgstr "Agregando {0} a las etiquetas a ignorar"
@@ -4701,7 +4701,7 @@ msgid "Value ''{0}'' for key ''{1}'' looks like ''{2}''."
 msgstr "Valor ''{0}'' para clave ''{1}'' se parece a ''{2}''"
 
 msgid "Presets do not contain property value"
-msgstr "Los predefinidos no contiene valores apropiados"
+msgstr "Este valor de propiedad no está entre los predefinidos"
 
 msgid "Value ''{0}'' for key ''{1}'' not in presets."
 msgstr "El valor \"{0}\" para la clave \"{1}\" no está en los predefinidos."
@@ -4714,14 +4714,14 @@ msgstr "Comprobar las claves de propiedad."
 
 msgid "Validate that property keys are valid checking against list of words."
 msgstr ""
-"Validar que las claves de propiedad son válidas analizando la lista de "
-"comprobación de las palabras."
+"Validar que las claves de propiedad son válidas comprobándolas con la lista "
+"de palabras."
 
 msgid "Use complex property checker."
 msgstr "Usar analizador de propiedad compleja."
 
 msgid "Validate property values and tags using complex rules."
-msgstr "Validar valores de propiedad y etiquetas que usan reglas complejas"
+msgstr "Validar valores de propiedad y etiquetas usando reglas complejas."
 
 msgid "TagChecker source"
 msgstr "Fuente del validador de etiquetas"
@@ -4888,7 +4888,7 @@ msgid "Way node near other way"
 msgstr "Nodo de vía próximo a otro vial"
 
 msgid "Connected way end node near other way"
-msgstr "Conectado nodo de extremo de vía próximo a otro vial"
+msgstr "Nodo de extremo de vía conectado próximo a otra vía"
 
 msgid "Unconnected nodes without physical tags"
 msgstr "Nodos desconectados sin etiquetas físicas"
@@ -8717,6 +8717,12 @@ msgstr ""
 "que se inicia JOSM.<br>Puede abrirlo manualmente del menú Archivo o desde la "
 "barra de herramientas.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -10234,6 +10240,9 @@ msgstr "Versión del API: {0}"
 msgid "Upload is discouraged"
 msgstr "No se recomienda la subida"
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Convertir a capa GPX"
 
@@ -16271,6 +16280,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "residencial"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "monte bajo (arbustos, matorral o maleza)"
@@ -16279,6 +16296,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr "bosque"
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "Calle Asociada"
@@ -16623,16 +16644,16 @@ msgid "OSM Inspector: Coastline (EU)"
 msgstr "OSM Inspector: Línea costera (EU)"
 
 msgid "imagico.de OSM images for mapping: Prokletije Mountains"
-msgstr ""
+msgstr "Imágenes de imagico.de: Montes Prokletije"
 
 msgid "imagico.de OSM images for mapping: Southern Transantarctic Mountains"
-msgstr ""
+msgstr "Imágenes de imagico.de: Montañas Transantárticas del Sur"
 
 msgid "imagico.de OSM images for mapping: Pensacola Mountains"
-msgstr ""
+msgstr "Imágenes de imagico.de: Montañas Pensacola"
 
 msgid "imagico.de OSM images for mapping: Elephant Island/Clarence Island"
-msgstr ""
+msgstr "Imágenes de imagico.de: Isla Elefante/Isla Clarence"
 
 msgid "IGN Argentina (TMS)"
 msgstr "IGN Argentina (TMS)"
@@ -16671,10 +16692,10 @@ msgid "LPI NSW Administrative Boundaries NPWS Reserve"
 msgstr "Límites administrativos de Reservas NPWS de LPI NSW"
 
 msgid "imagico.de OSM images for mapping: Northwest Heard Island"
-msgstr ""
+msgstr "Imágenes de imagico.de: Noroeste de la isla Heard"
 
 msgid "imagico.de OSM images for mapping: Heard Island coast"
-msgstr ""
+msgstr "Imágenes de imagico.de: Costa de la isla Heard"
 
 msgid "basemap.at"
 msgstr "basemap.at"
@@ -16722,6 +16743,18 @@ msgid "VoGIS: Höhen und Gelände"
 msgstr "VoGIS: Alturas y terrenos"
 
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
+msgstr "Imágenes de imagico.de: Montañas Rila y Pirin"
+
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
 msgstr ""
 
 msgid "AGIV Flanders most recent aerial imagery"
@@ -16736,9 +16769,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr "Imágenes aéreas numéricas de URBISfr (2013)"
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr "Imágenes aéreas numéricas de URBISnl (2013)"
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr "Imágenes aéreas de URBIS 2009"
 
@@ -16751,6 +16790,9 @@ msgstr "Imágenes aéreas de URBIS 2014"
 msgid "URBIS 2015 aerial imagery"
 msgstr "Imágenes aéreas de URBIS 2015"
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr "Imágenes aéreas SPW(allonie) PICC numéricas"
 
@@ -16776,10 +16818,10 @@ msgid "Benin: Cotonou Pleiade 2016"
 msgstr ""
 
 msgid "imagico.de OSM images for mapping: Cotonou"
-msgstr ""
+msgstr "Imágenes de imagico.de: Cotonú"
 
 msgid "imagico.de OSM images for mapping: Bouvet Island"
-msgstr ""
+msgstr "Imágenes de imagico.de: Isla Bouvet"
 
 msgid "IBGE Mapa de Setores Urbanos"
 msgstr "IBGE Mapa de Sectores Urbanos"
@@ -16788,13 +16830,13 @@ msgid "IBGE Mapa de Setores Rurais"
 msgstr "IBGE Mapa de Sectores Rurales"
 
 msgid "IBGE Distrito Federal"
-msgstr ""
+msgstr "IBGE Distrito Federal"
 
 msgid "Rio Mosaic 2013"
-msgstr ""
+msgstr "Mosaico de Río de Janeiro 2013"
 
 msgid "Rio Mosaic 2015"
-msgstr ""
+msgstr "Mosaico de Río de Janeiro 2015"
 
 msgid "Londrina Ortofoto 2011"
 msgstr "Londrina Ortofoto 2011"
@@ -16815,7 +16857,7 @@ msgid "British Columbia Mosaic"
 msgstr "Mosaico de Columbia Británica"
 
 msgid "Latest southwest British Columbia Landsat"
-msgstr ""
+msgstr "Último Landsat del sudoeste de la Columbia Británica"
 
 msgid "Kelowna 2012"
 msgstr "Kelowna 2012"
@@ -16824,23 +16866,24 @@ msgid "Kelowna Roads overlay"
 msgstr "Superposición de callejero de Kelowna"
 
 msgid "imagico.de OSM images for mapping: Eastern Devon Island coast"
-msgstr ""
+msgstr "Imágenes de imagico.de: Costa este de la Isla Devon"
 
 msgid "imagico.de OSM images for mapping: Northern Ellesmere Island"
-msgstr ""
+msgstr "Imágenes de imagico.de: Norte de la isla de Ellesmere"
 
 msgid ""
 "imagico.de OSM images for mapping: Northern Ellesmere Island July 2016"
 msgstr ""
+"Imágenes de imagico.de: Norte de la isla de Ellesmere en Julio de 2016"
 
 msgid "imagico.de OSM images for mapping: Fogo, Cape Verde"
-msgstr ""
+msgstr "Imágenes de imagico.de: Fogo, Cabo Verde"
 
 msgid "imagico.de OSM images for mapping: Isla Londonderry"
-msgstr ""
+msgstr "Imágenes de imagico.de: Isla Londonderry"
 
 msgid "imagico.de OSM images for mapping: Volcán Calbuco"
-msgstr ""
+msgstr "Imágenes de imagico.de: Volcán Calbuco"
 
 msgid "Czech CUZK:KM"
 msgstr "Chequia CUZK:KM"
@@ -16879,10 +16922,10 @@ msgid "Vejmidte (Denmark)"
 msgstr "Vejmidte (Dinamarca)"
 
 msgid "imagico.de OSM images for mapping: El Altar"
-msgstr ""
+msgstr "Imágenes de imagico.de: El Altar"
 
 msgid "imagico.de OSM images for mapping: Darwin and Wolf islands, Galapagos"
-msgstr ""
+msgstr "Imágenes de imagico.de: Islas Darwin y Wolf, Galápagos"
 
 msgid "Estonia Basemap (Maaamet)"
 msgstr "Mapa base de Estonia (Maaamet)"
@@ -17067,10 +17110,10 @@ msgid "Mainz latest aerial imagery"
 msgstr "Mainz últimas imágenes aéreas"
 
 msgid "imagico.de OSM images for mapping: Qasigiannguit"
-msgstr ""
+msgstr "Imágenes de imagico.de: Qasigiannguit"
 
 msgid "imagico.de OSM images for mapping: Thule Air Base"
-msgstr ""
+msgstr "Imágenes de imagico.de: Base aérea de Thule"
 
 msgid ""
 "imagico.de OSM images for mapping: Thule Airbase DMS low altitude overflight "
@@ -17087,7 +17130,7 @@ msgid ""
 msgstr ""
 
 msgid "imagico.de OSM images for mapping: Greenland mosaic"
-msgstr ""
+msgstr "Imágenes de imagico.de: Mosaico de Groenlandia"
 
 msgid "imagico.de OSM images for mapping: May 2013 off-nadir Landsat"
 msgstr ""
@@ -17147,19 +17190,19 @@ msgid "Hillshade Hungary"
 msgstr "Sombreado (hillshade) en Hungría"
 
 msgid "imagico.de OSM images for mapping: Eastern Iceland"
-msgstr ""
+msgstr "Imágenes de imagico.de: Este de Islandia"
 
 msgid "imagico.de OSM images for mapping: Rann of Kutch"
-msgstr ""
+msgstr "Imágenes de imagico.de: Rann de Kutch"
 
 msgid "imagico.de OSM images for mapping: Southeastern Sulawesi"
-msgstr ""
+msgstr "Imágenes de imagico.de: Sureste de Célebes"
 
 msgid "imagico.de OSM images for mapping: Bakun Reservoir"
-msgstr ""
+msgstr "Imágenes de imagico.de: Represa de Bakun"
 
 msgid "imagico.de OSM images for mapping: Batam"
-msgstr ""
+msgstr "Imágenes de imagico.de: Batam"
 
 msgid "Ireland British War Office 1:25k GSGS 3906"
 msgstr "Oficina de Guerra de Irlanda del Norte 1:25k GSGS 3906"
@@ -17222,10 +17265,10 @@ msgid "South Tyrol Orthofoto 2011"
 msgstr "Tirol Sur Ortofoto 2011"
 
 msgid "South Tyrol Orthofoto 2011 (highres)"
-msgstr ""
+msgstr "Ortofoto de Tirol del Sur 2011 (alta resolución)"
 
 msgid "South Tyrol Orthofoto 2014"
-msgstr ""
+msgstr "Ortofoto de Tirol del Sur 2014"
 
 msgid "South Tyrol Topomap"
 msgstr "Tirol Sur Topomapa"
@@ -17234,7 +17277,7 @@ msgid "Japan GSI ortho Imagery"
 msgstr ""
 
 msgid "imagico.de OSM images for mapping: Mount Kenya 2016"
-msgstr ""
+msgstr "Imágenes de imagico.de: Monte Kenia 2016"
 
 msgid "USSR - Latvia"
 msgstr "URSS - Letonia"
@@ -17279,7 +17322,7 @@ msgid "Svalbard -Orthophoto 2009/2011 EPSG:25833"
 msgstr "Svalbard - Ortofoto de 2009/2011 EPSG:25833"
 
 msgid "imagico.de OSM images for mapping: Western Karakoram"
-msgstr ""
+msgstr "Imágenes de imagico.de: Karakoram occidental"
 
 msgid "Gaza Strip - Pléiades - 2014/07/06"
 msgstr "Franja de Gaza - Pléyades - 2014/07/06"
@@ -17288,23 +17331,23 @@ msgid "Gaza Strip - Pléiades - 2014/07/06 (NIR)"
 msgstr "Franja de Gaza - Pléyades - 2014/07/06 (NIR)"
 
 msgid "imagico.de OSM images for mapping: Panama Canal - Pacific side"
-msgstr ""
+msgstr "Imágenes de imagico.de: Canal de Panamá - lado del Pacífico"
 
 msgid "imagico.de OSM images for mapping: Panama Canal"
-msgstr ""
+msgstr "Imágenes de imagico.de: Canal de Panamá"
 
 msgid "imagico.de OSM images for mapping: Vanatinai"
-msgstr ""
+msgstr "Imágenes de imagico.de: Vanatinai"
 
 msgid "imagico.de OSM images for mapping: New Ireland"
-msgstr ""
+msgstr "Imágenes de imagico.de: Nueva Irlanda"
 
 msgid "imagico.de OSM images for mapping: Coropuna"
-msgstr ""
+msgstr "Imágenes de imagico.de: Coropuna"
 
 msgid ""
 "imagico.de OSM images for mapping: Willkanuta Mountains and Quelccaya Ice Cap"
-msgstr ""
+msgstr "Imágenes de imagico.de: Cordillera de Vilcanota y glaciar Quelccaya"
 
 msgid "Pangasinán/Bulacan (Phillipines HiRes)"
 msgstr "Pangasinán/Bulacan (Alta resolución Filipinas)"
@@ -17442,10 +17485,10 @@ msgid "ScanEx SPOT"
 msgstr "ScanEx SPOT"
 
 msgid "imagico.de OSM images for mapping: Kerch Strait"
-msgstr ""
+msgstr "Imágenes de imagico.de: Estrecho de Kerch"
 
 msgid "imagico.de OSM images for mapping: Ushakov Island August 2016"
-msgstr ""
+msgstr "Imágenes de imagico.de: Isla de Ushakov en Agosto de 2016"
 
 msgid ""
 "imagico.de OSM images for mapping: Northern and Polar Ural mountains August "
@@ -17453,7 +17496,7 @@ msgid ""
 msgstr ""
 
 msgid "imagico.de OSM images for mapping: Vostochny Cosmodrome"
-msgstr ""
+msgstr "Imágenes de imagico.de: Cosmódromo Vostochni"
 
 msgid "Freemap.sk Car"
 msgstr "Freemap.sk vehículo"
@@ -17489,16 +17532,16 @@ msgid "imagico.de OSM images for mapping: Leskov Island ASTER"
 msgstr ""
 
 msgid "imagico.de OSM images for mapping: Scott Island"
-msgstr ""
+msgstr "Imágenes de imagico.de: Isla Scott"
 
 msgid "imagico.de OSM images for mapping: Leskov Island Landsat"
 msgstr ""
 
 msgid "imagico.de OSM images for mapping: Clerke Rocks"
-msgstr ""
+msgstr "Imágenes de imagico.de: Rocas Clerke"
 
 msgid "imagico.de OSM images for mapping: Shag Rocks"
-msgstr ""
+msgstr "Imágenes de imagico.de: Islas Aurora"
 
 msgid "Catastro Spain"
 msgstr "Catastro de España"
@@ -17522,7 +17565,7 @@ msgid "GRAFCAN Express - Canary Islands"
 msgstr "GRAFCAN Expresa - Islas Canarias"
 
 msgid "imagico.de OSM images for mapping: Adams Bridge"
-msgstr ""
+msgstr "Imágenes de imagico.de: Puente Adams"
 
 msgid "Kanton Aargau 25cm (AGIS 2011)"
 msgstr "Cantón Aargau 25cm (AGIS 2011)"
@@ -17545,12 +17588,11 @@ msgstr "Stadt Zürich Übersichtsplan (Strassen, Gebäude, Hausnummer)"
 msgid "Stadt Zürich Luftbild 2011"
 msgstr "Ciudad de Zürich Luftbild 2011"
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
-msgstr "Cantón de Solothurn - Imágenes aéreas RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
+msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
-"Cantón de Solothurn - Imágenes aéreas Infrarrojo (SOGIS 2013/2014/2015)"
 
 msgid "Canton de Génève 5cm (SITG 2011)"
 msgstr "Canton de Génova 5cm (SITG 2011)"
@@ -17599,6 +17641,7 @@ msgstr ""
 
 msgid "imagico.de OSM images for mapping: Cental Alps in late September 2016"
 msgstr ""
+"Imágenes de imagico.de: Alpes centrales a finales de septiembre de 2016"
 
 msgid "Taiwan e-Map Open Data"
 msgstr "Datos abiertos Taiwan e-Map"
@@ -17616,7 +17659,7 @@ msgid "NLSC Open Data WMTS"
 msgstr "NLSC Open Data WMTS"
 
 msgid "imagico.de OSM images for mapping: Mount Kilimanjaro 2016"
-msgstr ""
+msgstr "Imágenes de imagico.de: Monte Kilimanjaro 2016"
 
 msgid "MSR Maps Topo"
 msgstr "MSR Mapas Topográficos"
@@ -17646,7 +17689,7 @@ msgid "U.S. Forest Service roads"
 msgstr "Callejero del servicio de Bosques de EEUU"
 
 msgid "imagico.de OSM images for mapping: Alaska Range"
-msgstr ""
+msgstr "Imágenes de imagico.de: Cordillera de Alaska"
 
 msgid "NJ 2015 Aerial Imagery (Infrared)"
 msgstr ""
@@ -17669,7 +17712,7 @@ msgstr "Texas Ortofoto"
 msgid "Philadelphia 2015 Imagery"
 msgstr "Philadelphia 2015 Imágenes"
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -17682,10 +17725,10 @@ msgid "Delaware 2012 Orthophotography"
 msgstr "Ortofotografía de Delaware 2012"
 
 msgid "imagico.de OSM images for mapping: Rwenzori Mountains"
-msgstr ""
+msgstr "Imágenes de imagico.de: Montañas Rwenzori"
 
 msgid "imagico.de OSM images for mapping: Rwenzori Mountains 2016"
-msgstr ""
+msgstr "Imágenes de imagico.de: Montañas Rwenzori 2016"
 
 msgid "Ukraine - Orthophotomaps 2012"
 msgstr "Ucrania - Ortofotomapas 2012"
@@ -18010,6 +18053,11 @@ msgstr ""
 "de fondo. Optimizado para basemap.at."
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -18058,9 +18106,8 @@ msgstr ""
 "Implementa una línea de comandos y permite crear tus comandos. Vea el enlace "
 "para los comandos estándar (arco, círculo, etc)"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
-"(Peligro: ¡Experimental!) Herramienta para fusión (mezclar) de datos."
 
 msgid "Downloads new data when you pan/zoom"
 msgstr "Descargar datos nuevos al desplazarse o cambiar el zoom"
@@ -18214,6 +18261,11 @@ msgstr "Componente para importar imágenes georreferenciadas"
 msgid "Import vector graphics (SVG)"
 msgstr "Importa gráficos vectoriales (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 "Este componente simplifica el cartografiado y la edición de pasillos en "
@@ -18442,6 +18494,11 @@ msgid "Plugin for reverting changesets"
 msgstr "Complemento para revertir conjuntos de cambios"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -21836,13 +21893,13 @@ msgid "Closer Description"
 msgstr "Descripción detallada"
 
 msgid "Caravan Site/RV Park"
-msgstr "Sitio de pernocte para vehículos"
+msgstr "Sitio de pernocte para autocaravanas"
 
 msgid "Number of places"
 msgstr "Número de lugares"
 
 msgid "Power supply"
-msgstr "Fuente de alimentación"
+msgstr "Suministro de electricidad"
 
 msgid "Tents allowed"
 msgstr "Permitido tiendas de campaña"
@@ -21866,7 +21923,7 @@ msgid "Takeaway"
 msgstr "Comida para llevar"
 
 msgid "Delivery"
-msgstr "Entrega"
+msgstr "Reparto"
 
 msgid "Mo-Su 12:00-22:00"
 msgstr "Lu-Do 12:00-22:00"
@@ -21932,7 +21989,7 @@ msgid "toposcope"
 msgstr "toposcopio"
 
 msgid "Shown Area"
-msgstr "Mostrar área"
+msgstr "Área mostrada"
 
 msgid "site"
 msgstr "sitio"
@@ -21947,7 +22004,7 @@ msgid "Routes shown for:"
 msgstr "Rutas mostradas para:"
 
 msgid "Hiking"
-msgstr "Sendero"
+msgstr "Senderismo"
 
 msgid "Cycling"
 msgstr "Ciclismo"
@@ -21962,7 +22019,7 @@ msgid "Riding"
 msgstr "Equitación"
 
 msgid "... other transportation modes possible"
-msgstr "... otros modos de desplazamiento posible"
+msgstr "... otros modos de desplazamiento posibles"
 
 msgid "Information Board"
 msgstr "Panel informativo"
@@ -21971,7 +22028,7 @@ msgid "A board with information."
 msgstr "Un panel con información."
 
 msgid "Board Content"
-msgstr "Tablón de anuncios"
+msgstr "Contenido del panel"
 
 msgid "notice"
 msgstr "aviso"
@@ -22030,7 +22087,7 @@ msgid "Movie Theater/Cinema"
 msgstr "Cine"
 
 msgid "Drive-in theater"
-msgstr "Autocinema"
+msgstr "Autocine"
 
 msgid "3D"
 msgstr "3D"
@@ -22054,7 +22111,7 @@ msgid "wall"
 msgstr "muro"
 
 msgid "Amusement/Theme Park"
-msgstr "Parque de atracciones"
+msgstr "Parque de atracciones/temático"
 
 msgid "Water Park"
 msgstr "Parque acuático"
@@ -22066,7 +22123,7 @@ msgid "Swimming Pool"
 msgstr "Piscina"
 
 msgid "Used for the water area only."
-msgstr "Utilizado sólo para la zona de aguas."
+msgstr "Utilizado sólo para la zona de agua."
 
 msgid "Fitness Station"
 msgstr "Parque de gimnasia o ejercicios"
@@ -22084,7 +22141,7 @@ msgid "Picnic Site"
 msgstr "Zona de picnic"
 
 msgid "Fireplace"
-msgstr "Barbacoa"
+msgstr "Espacio para encender hogueras"
 
 msgid "Picnic Table"
 msgstr "Mesa de picnic"
@@ -22094,7 +22151,7 @@ msgstr "Barbacoa pública"
 
 msgctxt "grill"
 msgid "Fuel"
-msgstr "Leña"
+msgstr "Combustible"
 
 msgid "charcoal"
 msgstr "Carbón vegetal"
@@ -22115,7 +22172,7 @@ msgid "Casino"
 msgstr "Casino"
 
 msgid "Strip Club"
-msgstr "Club de alterne (striptease)"
+msgstr "Club de striptease"
 
 msgid "Brothel"
 msgstr "Burdel o prostíbulo"
@@ -22387,7 +22444,7 @@ msgid "A;A1;B;B1;C;C1;D;D1;BE;CE;C1E;DE;D1E"
 msgstr "A;A1;B;B1;C;C1;D;D1;BE;CE;C1E;DE;D1E"
 
 msgid "Health"
-msgstr "Centro médico"
+msgstr "Instalaciones sanitarias"
 
 msgid "Hospital"
 msgstr "Hospital"
@@ -22408,7 +22465,7 @@ msgid "Dispensing"
 msgstr "Expende con receta médica"
 
 msgid "Baby Hatch/Safe Haven"
-msgstr "Refugio para bebés"
+msgstr "Torno/buzón para abandonar bebés"
 
 msgid "Emergency Access Point"
 msgstr "Punto de acceso para emergencias"
@@ -22432,7 +22489,7 @@ msgid "Emergency"
 msgstr "Emergencia"
 
 msgid "Ambulance Station"
-msgstr "Estación de ambulancias"
+msgstr "Base de ambulancias"
 
 msgid "Automated Defibrillator"
 msgstr "Desfibrilador automático"
@@ -22447,13 +22504,13 @@ msgid "Located inside a building?"
 msgstr "¿Ubicado dentro de un edificio?"
 
 msgid "Last check date (YYYY-MM-DD)"
-msgstr "Última fecha de verificación (YYYY-MM-DD)"
+msgstr "Última fecha de verificación (AAAA-MM-DD)"
 
 msgid "Last check note"
 msgstr "Nota de la última verificación"
 
 msgid "Fire Extinguisher"
-msgstr "Extintor de fuego"
+msgstr "Extintor de incendios"
 
 msgid "Indoor"
 msgstr "Interior"
@@ -22481,14 +22538,14 @@ msgid "pond"
 msgstr "balsa de agua"
 
 msgid "Diameter (in mm)"
-msgstr "Diametro (en mm)"
+msgstr "Diámetro (en mm)"
 
 msgid "Hydrant Position"
-msgstr "Posición de hidrante"
+msgstr "Posición del hidrante"
 
 msgctxt "hydrant position"
 msgid "lane"
-msgstr "carril"
+msgstr "calzada"
 
 msgctxt "hydrant position"
 msgid "parking_lot"
@@ -22509,7 +22566,7 @@ msgid "suction"
 msgstr "succión"
 
 msgid "Count"
-msgstr "Cuenta"
+msgstr "Cantidad"
 
 msgid "Water Tank"
 msgstr "Tanque de agua"
@@ -22654,7 +22711,7 @@ msgid "meter"
 msgstr "metro"
 
 msgid "Drive through"
-msgstr "Utilizable desde el volante"
+msgstr "Utilizable desde un vehículo"
 
 msgid "Telephone"
 msgstr "Teléfono"
@@ -22664,13 +22721,13 @@ msgstr "Monedas"
 
 msgctxt "payment"
 msgid "Notes"
-msgstr "Notas"
+msgstr "Billetes"
 
 msgid "Telephone cards"
 msgstr "Tarjetas telefónicas"
 
 msgid "Internet Cafe"
-msgstr "Internet Cafe"
+msgstr "Cibercafé"
 
 msgid "Internet Access"
 msgstr "Acceso a Internet"
@@ -22682,7 +22739,7 @@ msgid "Display"
 msgstr "Esfera"
 
 msgid "analog"
-msgstr "análogo"
+msgstr "analógico"
 
 msgid "digital"
 msgstr "digital"
@@ -22718,16 +22775,16 @@ msgid "Shows humidity"
 msgstr "Muestra la humedad"
 
 msgid "Photo booth"
-msgstr "Cabina fotográfica"
+msgstr "Fotomatón"
 
 msgid "Recycling Container"
 msgstr "Contenedor de reciclado"
 
 msgid "Batteries"
-msgstr "Baterías"
+msgstr "Baterías (pilas)"
 
 msgid "Cans"
-msgstr "Envases"
+msgstr "Latas"
 
 msgid "Cardboard"
 msgstr "Cartón"
@@ -22751,7 +22808,7 @@ msgid "Plastic"
 msgstr "Plástico"
 
 msgid "Plastic Bottles"
-msgstr "Botellas De Plástico"
+msgstr "Botellas de plástico"
 
 msgid "Plastic Packaging"
 msgstr "Envases de plástico"
@@ -22787,7 +22844,7 @@ msgid "Casette or Elsan Disposal"
 msgstr "Eliminación de Casete o Elsan"
 
 msgid "Operation times"
-msgstr "Ciclo de funcionamiento"
+msgstr "Horario de funcionamiento"
 
 msgid "Backrest"
 msgstr "Respaldo"
@@ -22796,7 +22853,7 @@ msgid "Amount of Seats"
 msgstr "Número de asientos"
 
 msgid "Type of shelter"
-msgstr "Tipo de vivienda"
+msgstr "Tipo de refugio"
 
 msgctxt "shelter"
 msgid "basic_hut"
@@ -22860,7 +22917,7 @@ msgid "Advertising Column"
 msgstr "Columna para publicidad"
 
 msgid "Billboard"
-msgstr "Cartel"
+msgstr "Valla publicitaria"
 
 msgid "Sports"
 msgstr "Deportes"
@@ -22887,7 +22944,7 @@ msgid "decoturf"
 msgstr "Decoturf (tipo de pista de tenis dura)"
 
 msgid "tartan"
-msgstr "Tartan (pista para competiciones de atletismo)"
+msgstr "Tartán (material para pistas de atletismo)"
 
 msgid "Racetrack"
 msgstr "Pista de carreras"
@@ -22990,7 +23047,7 @@ msgid "Running"
 msgstr "Carreras"
 
 msgid "Climbing"
-msgstr "Alpinismo"
+msgstr "Escalada"
 
 msgid "Canoeing/Kayaking"
 msgstr "Canoaje/Kayak"
@@ -23069,7 +23126,7 @@ msgid "sleigh"
 msgstr "Sleigh (trineo para pasajeros)"
 
 msgid "snow_park"
-msgstr "parque de snowboard"
+msgstr "parque de nieve"
 
 msgid "Difficulty"
 msgstr "Dificultad"
@@ -23159,7 +23216,7 @@ msgid "Rounders"
 msgstr "Rounders"
 
 msgid "Rugby League"
-msgstr "Rugby"
+msgstr "Rugby 13 (Rugby league)"
 
 msgid "Rugby Union"
 msgstr "Rugby union o rugby 15"
@@ -23219,7 +23276,7 @@ msgid "Motorsport"
 msgstr "Deportes de motor"
 
 msgid "Kart Racing"
-msgstr "Carreta de karting"
+msgstr "Karting"
 
 msgid "Motocross"
 msgstr "Motocross"
@@ -23267,7 +23324,7 @@ msgstr "escuela, colegio o instituto de educación secundaria"
 
 msgctxt "building"
 msgid "commercial"
-msgstr "comercial"
+msgstr "oficinas"
 
 msgctxt "building"
 msgid "service"
@@ -23283,7 +23340,7 @@ msgstr "granero"
 
 msgctxt "building"
 msgid "stable"
-msgstr "estable"
+msgstr "establo"
 
 msgctxt "building"
 msgid "cabin"
@@ -23331,7 +23388,7 @@ msgstr "almacén"
 
 msgctxt "building"
 msgid "retail"
-msgstr "zona comercial"
+msgstr "comercial"
 
 msgctxt "building"
 msgid "shed"
@@ -23355,7 +23412,7 @@ msgstr "silo"
 
 msgctxt "building"
 msgid "cowshed"
-msgstr "Establo"
+msgstr "Establo para vacas"
 
 msgctxt "building"
 msgid "construction"
@@ -23434,11 +23491,11 @@ msgstr "bungalow"
 
 msgctxt "building"
 msgid "dormitory"
-msgstr "habitación"
+msgstr "residencia"
 
 msgctxt "building"
 msgid "terrace"
-msgstr "terraza"
+msgstr "adosados"
 
 msgctxt "building"
 msgid "detached"
@@ -23736,7 +23793,7 @@ msgid "Manually"
 msgstr "Manualmente"
 
 msgid "Remote"
-msgstr "Mando a distancia"
+msgstr "A distancia"
 
 msgid "Display:"
 msgstr "Visualización:"
@@ -24006,7 +24063,7 @@ msgid "Coal Power Generator"
 msgstr "Generador de energía de Carbón"
 
 msgid "Gas Power Generator"
-msgstr "Generadir de Energía de Gas"
+msgstr "Generador de Energía de Gas"
 
 msgid "combined_cycle"
 msgstr "ciclo combinado"
@@ -24018,7 +24075,7 @@ msgid "Diesel Power Generator"
 msgstr "Generador de energía Diesel"
 
 msgid "Gasoline Power Generator"
-msgstr "Generador de energía de Gasolína"
+msgstr "Generador de energía de Gasolina"
 
 msgid "Nuclear Reactor"
 msgstr "Reactor Nuclear"
@@ -24056,7 +24113,7 @@ msgid "CANada Deuterium Uranium reactor (CANDU)"
 msgstr "Reactor de Uranio Deuterio Canadá (CANDU)"
 
 msgid "cold-fusion"
-msgstr "fusión-fria"
+msgstr "fusión fría"
 
 msgid "fusion"
 msgstr "fusión"
@@ -24130,7 +24187,7 @@ msgstr "corriente del río"
 
 msgctxt "generator method"
 msgid "water-pumped-storage"
-msgstr "agua bombeada del almacenaje"
+msgstr "agua acumulada por bombeo"
 
 msgctxt "generator method"
 msgid "water-storage"
@@ -24158,7 +24215,7 @@ msgid "pelton_turbine"
 msgstr "turbina Pelton"
 
 msgid "Tidal Water Turbine"
-msgstr "Turbina de Marea Acuática"
+msgstr "Turbina de energía mareomotriz"
 
 msgctxt "generator method"
 msgid "barrage"
@@ -24190,7 +24247,7 @@ msgid "heat_pump"
 msgstr "bombeo de calor"
 
 msgid "Wind Turbine"
-msgstr "Turbina de viento"
+msgstr "Turbina eólica"
 
 msgid "Power Substation"
 msgstr "Subestación eléctrica"
@@ -26951,6 +27008,9 @@ msgstr ""
 "{0} es la etiqueta para la navegación lineal. Para etiquetar el área de agua "
 "utilice {1} + {2}."
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr "nombre de calle abreviado"
 
@@ -27092,19 +27152,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr "Nodos que duplican las etiquetas de las vías padre"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
-"no colocar wikipedia-idioma, use ''wikipedia''=''idioma:título de la página''"
 
-msgid "unknown language prefix in wikipedia tag"
-msgstr "prefijo de idioma desconocido en la etiqueta wikipedia"
+msgid "wikipedia tag has an unknown language prefix"
+msgstr ""
 
-msgid "deprecated format for wikipedia tag"
-msgstr "Formato obsoleto para la etiqueta wikipedia"
+msgid "wikipedia tag format is deprecated"
+msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr "''wikipedia''=''Código del idioma:Título del artículo''"
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr "Esconder íconos a un nivel bajo de acercamiento"
 
@@ -27740,11 +27838,11 @@ msgstr "Número total de imágenes:"
 msgid "images"
 msgstr "Imágenes"
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
-msgstr "La fuente de señal de tráfico en ''{0}'' tiene un formato incorrecto"
+msgid "Mapillary object layer"
+msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
-msgstr "No se pudo leer el archivo fuente de \"{0}\""
+msgid "Displays the layer displaying the map objects detected by Mapillary"
+msgstr ""
 
 msgid "Mapillary"
 msgstr "Mapillary"
@@ -27791,9 +27889,6 @@ msgstr "Modo unión"
 msgid "Join/unjoin pictures"
 msgstr "Unir/separar imágenes"
 
-msgid "Join Mapillary pictures"
-msgstr "Unir imágenes de Mapillary"
-
 msgid "Submit changeset"
 msgstr "Enviar conjunto de cambios"
 
@@ -27829,9 +27924,6 @@ msgstr "Subir imágenes."
 msgid "Walk mode"
 msgstr "Modo caminar"
 
-msgid "Start walk mode"
-msgstr "Iniciar modo caminar"
-
 msgid "Zoom to selected image"
 msgstr "Zoom dentro de la imagen seleccionada"
 
@@ -27937,18 +28029,18 @@ msgstr "Historial de Mapillary"
 msgid "Open Mapillary history dialog"
 msgstr "Abrir el diálogo del historial de Mapillary"
 
+msgid "No image selected"
+msgstr "Ninguna imagen seleccionada"
+
+msgid "Press \"{0}\" to download images"
+msgstr ""
+
 msgid "Mapillary picture"
 msgstr "Imágenes de Mapillary"
 
 msgid "Open Mapillary window"
 msgstr "Abrir ventana de Mapillary"
 
-msgid "Mapillary dialog"
-msgstr "Diálogo de Mapillary"
-
-msgid "Open Mapillary main dialog"
-msgstr "Abrir ventana principal de Mapillary"
-
 msgid "Next picture"
 msgstr "Fotografía siguiente"
 
@@ -28002,6 +28094,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr "Vista previa de imágenes cuando el cursor se sitúa sobre el icono"
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr "Modo de descarga"
 
@@ -28082,6 +28177,12 @@ msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 "Muestra la información detallada sobre la imagen de Mapillary seleccionada"
 
+msgid "View in browser"
+msgstr "Ver en el navegador"
+
+msgid "Copy key"
+msgstr "Copiar clave"
+
 msgid "Add Mapillary tag"
 msgstr "Añadir etiqueta mapillary"
 
@@ -28103,6 +28204,12 @@ msgstr "la secuencia no tiene clave"
 msgid "Could not open the URL {0} in a browser"
 msgstr "No se pudo abrir la URL {0} en un navegador"
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] "Eliminada {0} imágen"
@@ -28129,6 +28236,9 @@ msgstr[1] "{0} imágenes giradas"
 msgid "2 images unjoined"
 msgstr "2 imágenes  separadas"
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr "todo en la zona visible"
 
@@ -28145,6 +28255,9 @@ msgstr ""
 "El área de OSM descargado es demasiado grande. El modo de descarga se ha "
 "cambiado a la zona de OSM hasta que se reinicie la capa."
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr "Descargando"
 
@@ -28188,18 +28301,6 @@ msgstr "No se encuentra conectado a Mapillary"
 msgid "Uploading: {0}"
 msgstr "Cargando: {0}"
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr "¡La clave de imagen '' {0} '' no es válida!"
-
-msgid "The image key must not be null here!"
-msgstr "¡La clave de imagen no debe ser nula aquí!"
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr "¡La secuencia de clave ''{0}'' no es válida!"
-
-msgid "The sequence key must not be null here!"
-msgstr "¡La clave de secuencia no debe ser nula aquí!"
-
 msgid "NanoLog"
 msgstr "NanoLog"
 
@@ -28816,6 +28917,9 @@ msgstr "Edificio:"
 msgid "Tags:"
 msgstr "Etiquetas:"
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "Nombre:"
 
@@ -28850,6 +28954,11 @@ msgstr "Tratando de detectar un área en:"
 msgid "Created area"
 msgstr "Área creada"
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr "No se puede detectar un polígono donde ha hecho clic."
 
@@ -28952,12 +29061,38 @@ msgstr "combinar nodos"
 msgid "Merge nodes with existing nodes"
 msgstr "Combinar nodos con nodos existentes"
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr "Depurar"
 
 msgid "Debugging mode will write images for each processing step."
 msgstr "El modo de depuración escribirá imágenes para cada paso del proceso."
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr "Generalización de edificios"
 
@@ -29064,9 +29199,6 @@ msgstr "Sin nodos de dirección dentro de los edificios encontrados"
 msgid "on polygon"
 msgstr "en polígono"
 
-msgid "Add address"
-msgstr "Añadir dirección"
-
 msgid "Helping tool for tag address"
 msgstr "Herramienta de ayuda para establecer dirección"
 
@@ -29715,14 +29847,6 @@ msgstr "Eliminar el esquema seleccionado de la lista"
 msgid "Color Schemes"
 msgstr "Esquemas de color"
 
-msgid "Conflate object pair"
-msgstr "Par de objetos combinados"
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] "Se añadió {0} objecto a la capa sujeto"
-msgstr[1] "Added {0} objects to subject layer"
-
 msgid "Conflation"
 msgstr "Combinación"
 
@@ -29753,15 +29877,12 @@ msgstr "Configurar"
 msgid "Configure conflation options"
 msgstr "Configurar las opciones de combinación"
 
-msgid "Delete {0} conflation matches"
-msgstr "Borrar {0} emparejamientos de combinación"
-
-msgid "Remove {0} unmatched objects"
-msgstr "Eliminar {0} objetos sin emparejamiento"
-
 msgid "Remove selected matches"
 msgstr "Quitar coincidencias seleccionadas"
 
+msgid "Remove ({0})"
+msgstr ""
+
 msgid "Conflate"
 msgstr "Combinar"
 
@@ -29771,8 +29892,11 @@ msgstr "Combinar los objetos seleccionados"
 msgid "Conflation: {0}"
 msgstr "Combinación: {0}"
 
-msgid "Cannot replace geometry."
-msgstr "No es posible remplazar la geometría."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
+msgstr ""
 
 msgid "Zoom to selected primitive(s)"
 msgstr "Acercar a la(s) primitiva(s) seleccionada(s)"
@@ -29783,23 +29907,130 @@ msgstr "Seleccionar la(s) primitiva(s) seleccionada(s)"
 msgid "Select the primitives currently selected in the list"
 msgstr "Seleccionar las primitivas actualmente seleccionadas en la lista"
 
-msgid "Match finder settings"
-msgstr "Preferencias del buscador de emparejamientos"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr "Asunto"
+
+msgid "Conflate object pair"
+msgstr "Par de objetos combinados"
+
+msgid "Cannot replace geometry."
+msgstr "No es posible remplazar la geometría."
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] "Se añadió {0} objecto a la capa sujeto"
+msgstr[1] "Added {0} objects to subject layer"
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr "Eliminar {0} objetos sin emparejamiento"
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
 
-msgid "Match finder method"
-msgstr "Método del buscador de emparejamientos"
+msgid " adjacent Reference features"
+msgstr ""
 
-msgid "Threshold distance"
-msgstr "Umbral de distancia"
+msgid "Weight"
+msgstr "Impedancia"
 
-msgid "Distances greater than this will result in a score of zero."
-msgstr "Distancias mayores a este valor resultarán con un puntaje de cero."
+msgid "Standard Distance"
+msgstr ""
 
-msgid "Centroid distance"
-msgstr "Distancia al centroide"
+msgid "below"
+msgstr ""
 
-msgid "Hausdorff distance"
-msgstr "Distancia de Hausdorff"
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
+msgstr ""
+
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
+msgstr ""
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
+
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
+msgstr ""
 
 msgid "Configure conflation settings"
 msgstr "Configurar los parámetros de combinación"
@@ -29807,14 +30038,32 @@ msgstr "Configurar los parámetros de combinación"
 msgid "Generate matches"
 msgstr "Generar emparejamientos"
 
-msgid "Layer:"
-msgstr "Capa:"
+msgid "Reference:"
+msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
-msgstr "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
+msgstr ""
 
-msgid "Subject"
-msgstr "Asunto"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Reemplazar geometría"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
+msgstr ""
 
 msgid "Selections must be made for both reference and subject."
 msgstr ""
@@ -29847,11 +30096,26 @@ msgstr "Selección vacía"
 msgid "Freeze reference selection"
 msgstr "Congelar la selección de referencia"
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
-msgstr "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
 
-msgid "Invalid reference or subject"
-msgstr "Referencia o sujeto inválido"
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
+msgstr ""
+
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
+msgstr ""
 
 msgid "Download OSM data continuously"
 msgstr "Descargar datos de OSM continuamente"
@@ -30974,6 +31238,33 @@ msgstr "Importar gráficos vectoriales"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "Archivos SVG [complemento ImportVec] (*.svg)"
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr "Asistente de vestíbulo..."
 
@@ -31244,9 +31535,6 @@ msgstr "Reemplazar vía"
 msgid "Replace way of selected way with a new way"
 msgstr "Reemplazar la vía de manera selectiva por otra nueva"
 
-msgid "Replace Geometry"
-msgstr "Reemplazar geometría"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -32600,9 +32888,6 @@ msgstr "Editar los datos GPS de la fotografía"
 msgid "Please select an image first."
 msgstr "Por favor, seleccione un imagen primero"
 
-msgid "No image selected"
-msgstr "Ninguna imagen seleccionada"
-
 msgid "(Empty values delete the according fields.)"
 msgstr "(Eliminar los valores vacíos según los campos.)"
 
@@ -33629,6 +33914,12 @@ msgstr ""
 "Advertencia: no se soporta el elemento final \"{0}\" en el contenido del "
 "conjunto de cambios en la posición ({1},{2}). Omitiéndolo."
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr "Complemento Road Sign (señales de tráfico)"
 
@@ -33758,9 +34049,6 @@ msgstr "Configurar las preferencias de enrutamiento"
 msgid "Speed (Km/h)"
 msgstr "Velocidad (km/h)"
 
-msgid "Weight"
-msgstr "Impedancia"
-
 msgid "Enter weight values"
 msgstr "Introduzca el peso de los valores"
 
diff --git a/i18n/po/et.po b/i18n/po/et.po
index e46ff43..9bc5020 100644
--- a/i18n/po/et.po
+++ b/i18n/po/et.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2017-02-23 08:40+0000\n"
 "Last-Translator: Margus Värton <margus at dakar.ee>\n"
 "Language-Team: Estonian <et at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:46+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:45+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: et\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1435,7 +1435,7 @@ msgstr "Tõmba joon GPSi punktide vahele."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Näita/peida seade {0}"
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -8037,6 +8037,12 @@ msgstr ""
 "JOSM käivitatakse.<br>Sa võid ka samas seda käsitsi avada Fail-menüüst või "
 "tööriistaribalt.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9385,6 +9391,9 @@ msgstr "API versioon: {0}"
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14690,6 +14699,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14698,6 +14715,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -15143,6 +15164,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -15155,9 +15188,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -15170,6 +15209,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15961,10 +16003,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -16084,7 +16126,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16411,6 +16453,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16443,7 +16490,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16565,6 +16612,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr "Vektorgraafika (SVG) importimine"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16738,6 +16790,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -25082,6 +25139,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -25212,18 +25272,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25822,10 +25921,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25873,9 +25972,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25907,9 +26003,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -26015,16 +26108,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -26078,6 +26171,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -26146,6 +26242,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -26167,6 +26269,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -26193,6 +26301,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -26207,6 +26318,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26249,18 +26363,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26767,6 +26869,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26800,6 +26905,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26887,12 +26997,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26993,9 +27129,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27573,14 +27706,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27611,13 +27736,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27629,7 +27751,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27641,22 +27766,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27665,13 +27897,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27704,10 +27954,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28737,6 +29002,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28988,9 +29280,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -30243,9 +30532,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -31226,6 +31512,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31355,9 +31647,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/eu.po b/i18n/po/eu.po
index f8c6b5a..764d0a1 100644
--- a/i18n/po/eu.po
+++ b/i18n/po/eu.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2015-03-09 16:55+0000\n"
 "Last-Translator: Asier Sarasua Garmendia <Unknown>\n"
 "Language-Team: Basque <eu at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:38+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:38+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: eu\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1442,7 +1442,7 @@ msgstr "Marraztu marrak ezer ez dagoen gps puntuen artean."
 msgid "Toggles the global setting ''{0}''."
 msgstr "''{0}'' Ezarpen orokorra aldatuko du."
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -8108,6 +8108,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9422,6 +9428,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14645,6 +14654,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14653,6 +14670,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -15098,6 +15119,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -15110,9 +15143,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -15125,6 +15164,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15916,10 +15958,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -16039,7 +16081,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16366,6 +16408,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16399,7 +16446,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16527,6 +16574,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16704,6 +16756,11 @@ msgid "Plugin for reverting changesets"
 msgstr "Aldaketa-multzoak"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -25068,6 +25125,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -25198,18 +25258,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25808,10 +25907,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25859,9 +25958,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25893,9 +25989,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -26001,16 +26094,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -26064,6 +26157,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -26132,6 +26228,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -26153,6 +26255,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -26179,6 +26287,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -26193,6 +26304,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26235,18 +26349,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26743,6 +26845,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26776,6 +26881,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26863,12 +26973,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26969,9 +27105,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27548,14 +27681,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr "Kolore-eskemak"
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27586,13 +27711,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27604,7 +27726,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27616,22 +27741,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27640,13 +27872,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27679,10 +27929,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28710,6 +28975,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28961,9 +29253,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -30210,9 +30499,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -31193,6 +31479,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31322,9 +31614,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/fa.po b/i18n/po/fa.po
index b9a26b7..060b777 100644
--- a/i18n/po/fa.po
+++ b/i18n/po/fa.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2014-03-18 07:32+0000\n"
 "Last-Translator: Saeed Ghazi Joolaee <Unknown>\n"
 "Language-Team: Persian <fa at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:08+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:05+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: fa\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1453,7 +1453,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7986,6 +7986,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9305,6 +9311,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14520,6 +14529,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14528,6 +14545,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14973,6 +14994,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14985,9 +15018,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -15000,6 +15039,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15791,10 +15833,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15914,7 +15956,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16241,6 +16283,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16273,7 +16320,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16393,6 +16440,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16561,6 +16613,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24903,6 +24960,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -25033,18 +25093,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25643,10 +25742,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25694,9 +25793,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25728,9 +25824,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25836,16 +25929,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25899,6 +25992,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25967,6 +26063,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25988,6 +26090,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -26014,6 +26122,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -26028,6 +26139,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26070,18 +26184,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26578,6 +26680,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26611,6 +26716,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26698,12 +26808,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26804,9 +26940,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27383,14 +27516,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27421,13 +27546,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27439,7 +27561,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27451,22 +27576,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27475,13 +27707,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27514,10 +27764,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28545,6 +28810,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28796,9 +29088,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -30040,9 +30329,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -31023,6 +31309,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31152,9 +31444,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/fi.po b/i18n/po/fi.po
index e17c7a3..895b765 100644
--- a/i18n/po/fi.po
+++ b/i18n/po/fi.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2016-01-19 17:11+0000\n"
 "Last-Translator: Lauri Kytömaa <Unknown>\n"
 "Language-Team: Finnish <fi at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:47+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:46+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: fi\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1494,7 +1494,7 @@ msgstr "Piirrä viivat GPS-pisteiden välille."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Vaihda asetuksen \"{0}\" tila"
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -8391,6 +8391,12 @@ msgstr ""
 "<html>Avaa tämä latausikkuna aina kun JOSM käynnistyy.<br>Tämän voi muutoin "
 "avata Tiedosto-valikosta tai työkalupalkista.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9855,6 +9861,9 @@ msgstr "API:n versio: {0}"
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Muuta GPX-tasoksi"
 
@@ -15312,6 +15321,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "asuinalue"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -15320,6 +15337,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -15765,6 +15786,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -15777,9 +15810,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -15792,6 +15831,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -16583,10 +16625,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -16706,7 +16748,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -17035,6 +17077,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -17069,7 +17116,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -17196,6 +17243,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -17380,6 +17432,11 @@ msgid "Plugin for reverting changesets"
 msgstr "Liitännäinen muutoskokoelmien muutosten palauttamiseen ennalleen"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -25744,6 +25801,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -25878,18 +25938,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
-msgstr "wikipedia -tagin arvo ei ole suositellussa muodossa"
+msgid "wikipedia tag format is deprecated"
+msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr "Piilota kuvakkeet näytettäessä suuri alue"
 
@@ -26500,10 +26599,10 @@ msgstr "Kuvia yhteensä:"
 msgid "images"
 msgstr "kuvaa"
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -26551,9 +26650,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -26585,9 +26681,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -26693,16 +26786,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -26756,6 +26849,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -26824,6 +26920,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -26845,6 +26947,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -26871,6 +26979,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -26885,6 +26996,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26927,18 +27041,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -27439,6 +27541,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -27472,6 +27577,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -27561,12 +27671,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -27667,9 +27803,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -28258,14 +28391,6 @@ msgstr "Poista valittu väriteema listasta."
 msgid "Color Schemes"
 msgstr "Väriteemat"
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -28296,13 +28421,10 @@ msgstr "Asetukset"
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -28314,7 +28436,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -28326,22 +28451,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
 msgstr ""
 
-msgid "Match finder method"
+msgid "Symmetric Difference (Centroids Aligned)"
 msgstr ""
 
-msgid "Threshold distance"
+msgid "Compactness"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid "Angle Histogram. Bins: "
 msgstr ""
 
-msgid "Centroid distance"
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
+msgstr ""
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
+
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -28350,13 +28582,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Korvaa geometria"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -28389,10 +28639,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -29437,6 +29702,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -29688,9 +29980,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr "Korvaa geometria"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -30957,9 +31246,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -31948,6 +32234,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -32077,9 +32369,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/fil.po b/i18n/po/fil.po
index b5eedfa..fa0767c 100644
--- a/i18n/po/fil.po
+++ b/i18n/po/fil.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2011-06-19 14:15+0000\n"
 "Last-Translator: Anthony Balico <Unknown>\n"
 "Language-Team: Filipino <fil at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:26+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:21+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: fil\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1388,7 +1388,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7918,6 +7918,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9232,6 +9238,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14447,6 +14456,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14455,6 +14472,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14900,6 +14921,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14912,9 +14945,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14927,6 +14966,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15718,10 +15760,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15841,7 +15883,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16168,6 +16210,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16200,7 +16247,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16320,6 +16367,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16488,6 +16540,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24830,6 +24887,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24960,18 +25020,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25570,10 +25669,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25621,9 +25720,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25655,9 +25751,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25763,16 +25856,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25826,6 +25919,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25894,6 +25990,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25915,6 +26017,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25941,6 +26049,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25955,6 +26066,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25997,18 +26111,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26505,6 +26607,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26538,6 +26643,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26625,12 +26735,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26731,9 +26867,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27310,14 +27443,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27348,13 +27473,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27366,7 +27488,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27378,22 +27503,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27402,13 +27634,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27441,10 +27691,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28472,6 +28737,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28723,9 +29015,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29967,9 +30256,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30950,6 +31236,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31079,9 +31371,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/fo.po b/i18n/po/fo.po
index 48ace8b..07e4ca4 100644
--- a/i18n/po/fo.po
+++ b/i18n/po/fo.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2015-02-28 16:15+0000\n"
 "Last-Translator: LiFo <Unknown>\n"
 "Language-Team: Faroese <fo at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:47+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:45+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
 msgstr "{0}: valmøguleiki ''{1}'' er tvítýddur"
@@ -1387,7 +1387,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7917,6 +7917,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9231,6 +9237,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14446,6 +14455,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14454,6 +14471,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14899,6 +14920,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14911,9 +14944,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14926,6 +14965,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15717,10 +15759,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15840,7 +15882,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16167,6 +16209,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16199,7 +16246,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16319,6 +16366,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16487,6 +16539,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24829,6 +24886,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24959,18 +25019,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25569,10 +25668,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25620,9 +25719,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25654,9 +25750,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25762,16 +25855,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25825,6 +25918,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25893,6 +25989,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25914,6 +26016,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25940,6 +26048,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25954,6 +26065,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25996,18 +26110,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26504,6 +26606,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26537,6 +26642,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26624,12 +26734,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26730,9 +26866,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27309,14 +27442,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27347,13 +27472,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27365,7 +27487,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27377,22 +27502,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27401,13 +27633,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27440,10 +27690,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28471,6 +28736,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28722,9 +29014,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29966,9 +30255,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30949,6 +31235,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31078,9 +31370,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/fr.po b/i18n/po/fr.po
index 835b065..2e812ab 100644
--- a/i18n/po/fr.po
+++ b/i18n/po/fr.po
@@ -5,7 +5,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: fr\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2017-02-25 16:25+0000\n"
 "Last-Translator: Dirk Stöcker <launchpad at dstoecker.de>\n"
 "Language-Team: Fr <>\n"
@@ -13,8 +13,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:48+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:47+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: fr\n"
 "X-Poedit-Bookmarks: 1767,-1,-1,2669,-1,-1,-1,-1,-1,-1\n"
 
@@ -1518,8 +1518,8 @@ msgstr "Dessiner des lignes entre les points GPS."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Bascule vers la configuration globale ''{0}''."
 
-msgid "Encourage/discourage upload"
-msgstr "Encourager/dissuader l’’envoi"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "Séparer les chemins"
@@ -8634,6 +8634,12 @@ msgstr ""
 "JOSM.<br>Vous pouvez l’ouvrir manuellement depuis le menu Fichier ou la "
 "barre d’outils.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -10164,6 +10170,9 @@ msgstr "Version de l’API : {0}"
 msgid "Upload is discouraged"
 msgstr "L’’envoi est dissuadé"
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Convertir en calque GPX"
 
@@ -16174,6 +16183,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "residentiel"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "broussailles"
@@ -16182,6 +16199,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr "bois"
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "associatedStreet"
@@ -16627,6 +16648,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr "AGIV Flandres images les plus récentes"
 
@@ -16639,9 +16672,15 @@ msgstr "AGIV Flandres GRB"
 msgid "URBISfr numerical imagery (2013)"
 msgstr "Imagerie numérique URBISfr (2013)"
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr "Imagerie numérique URBISnl (2013)"
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr "Imagerie aérienne URBIS 2009"
 
@@ -16654,6 +16693,9 @@ msgstr "Imagerie aérienne URBIS 2014"
 msgid "URBIS 2015 aerial imagery"
 msgstr "Imagerie aérienne URBIS 2015"
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr "Imagerie numérique SPW(allonie) PICC"
 
@@ -17449,10 +17491,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -17572,7 +17614,7 @@ msgstr "Texas Orthophoto"
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -17916,6 +17958,11 @@ msgstr ""
 "bâtiments à partir de calques en arrière-plan. Optimisé pour basemap.at."
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -17962,8 +18009,8 @@ msgstr ""
 "Implémente une ligne de commande et permet la création de commandes "
 "personnalisées. Voir le lien pour les commandes standard (arc, circle etc.)"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
-msgstr "(Attention : expérimental !) Outil d’assemblage de données."
+msgid "Tool for conflating data (matching and merging)."
+msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
 msgstr ""
@@ -18112,6 +18159,11 @@ msgstr "Permet d’importer des images spatiales référencées"
 msgid "Import vector graphics (SVG)"
 msgstr "Permet d’importer des images vectorielles (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr "Ce greffon simplifie la cartographie des couloirs en intérieur."
 
@@ -18333,6 +18385,11 @@ msgid "Plugin for reverting changesets"
 msgstr "Permet d’annuler les groupes de modifications."
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -26812,6 +26869,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr "abbréviation du nom de rue"
 
@@ -26952,20 +27012,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr "Nœuds dupliquant les attributs du chemin parent"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
-"aucune langue spécifiée pour wikipedia, utilisez "
-"\"wikipedia\"=\"langues:titre de l''article\""
 
-msgid "unknown language prefix in wikipedia tag"
-msgstr "prefixe de langue absent sur le tag Wikipedia"
+msgid "wikipedia tag has an unknown language prefix"
+msgstr ""
 
-msgid "deprecated format for wikipedia tag"
-msgstr "format déprécié comme attribut wikipédia"
+msgid "wikipedia tag format is deprecated"
+msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr "''wikipedia''=''langue:page de titre''"
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr "Cacher les icônes à un faible zoom"
 
@@ -27609,10 +27706,10 @@ msgstr "Images totales :"
 msgid "images"
 msgstr "images"
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -27660,9 +27757,6 @@ msgstr "Mode assemblage"
 msgid "Join/unjoin pictures"
 msgstr "(Dés)assembler les images"
 
-msgid "Join Mapillary pictures"
-msgstr "Assembler les images Mapillary"
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -27694,9 +27788,6 @@ msgstr "Envoi de photographies."
 msgid "Walk mode"
 msgstr "Mode piéton"
 
-msgid "Start walk mode"
-msgstr "Commencer le mode piéton"
-
 msgid "Zoom to selected image"
 msgstr "Zoomer sur l’image sélectionnée"
 
@@ -27802,18 +27893,18 @@ msgstr "Historique de Mapillary"
 msgid "Open Mapillary history dialog"
 msgstr "Ouvrir la fenêtre d''historique de Mapillary"
 
+msgid "No image selected"
+msgstr "Pas d''image sélectionnée"
+
+msgid "Press \"{0}\" to download images"
+msgstr ""
+
 msgid "Mapillary picture"
 msgstr "Image Mapillary"
 
 msgid "Open Mapillary window"
 msgstr "Ouvrir la fenêtre Mapillary"
 
-msgid "Mapillary dialog"
-msgstr "Fenêtre Mapillary"
-
-msgid "Open Mapillary main dialog"
-msgstr "Ouvrir la fenêtre Mapillary principale"
-
 msgid "Next picture"
 msgstr "Photo suivante"
 
@@ -27867,6 +27958,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr "Mode téléchargement"
 
@@ -27937,6 +28031,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -27958,6 +28058,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] "{0} photo effacée"
@@ -27984,6 +28090,9 @@ msgstr[1] "{0} images tournées"
 msgid "2 images unjoined"
 msgstr "2 images désassemblées"
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -27998,6 +28107,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr "Téléchargement en cours"
 
@@ -28040,18 +28152,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr "Envoi en cours : {0}"
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr "La clé de l''image ''{0}'' n''est pas valide!"
-
-msgid "The image key must not be null here!"
-msgstr "La clé de l''image ne doit pas être nulle!"
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr "La séquence de clé de l''image ''{0}'' n''est pas valide!"
-
-msgid "The sequence key must not be null here!"
-msgstr "La séquence de clé de l''image ne doit pas être nulle!"
-
 msgid "NanoLog"
 msgstr "NanoLog"
 
@@ -28662,6 +28762,9 @@ msgstr "Bâtiment :"
 msgid "Tags:"
 msgstr "Attributs :"
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "Nom :"
 
@@ -28697,6 +28800,11 @@ msgstr ""
 msgid "Created area"
 msgstr "Zone créée"
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 "La détection d’un polygone s’est avérée impossible à l’endroit où vous avez "
@@ -28799,12 +28907,38 @@ msgstr "fusionner des nœuds"
 msgid "Merge nodes with existing nodes"
 msgstr "Fusionner les nœuds avec les nœuds existants"
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr "Débogueur"
 
 msgid "Debugging mode will write images for each processing step."
 msgstr "Le mode débogage écrira des images à chaque étape du traitement."
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -28908,9 +29042,6 @@ msgstr "Pas de noeud d’adresses trouvés dans les bâtiments"
 msgid "on polygon"
 msgstr "sur le polygone"
 
-msgid "Add address"
-msgstr "Ajouter une adresse"
-
 msgid "Helping tool for tag address"
 msgstr "Outil d’aide pour l’adresse"
 
@@ -29556,14 +29687,6 @@ msgstr "Supprimer le jeu sélectionné de la liste"
 msgid "Color Schemes"
 msgstr "Jeux de couleurs"
 
-msgid "Conflate object pair"
-msgstr "Combiner les objets"
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] "{0} objet ajouté au calque sujet"
-msgstr[1] "{0} objets ajoutés au calque sujet"
-
 msgid "Conflation"
 msgstr "Conflation"
 
@@ -29594,15 +29717,12 @@ msgstr "Configurer"
 msgid "Configure conflation options"
 msgstr "Configurer les options de combinaison"
 
-msgid "Delete {0} conflation matches"
-msgstr "Supprimer {0} correspondances de combinaison"
-
-msgid "Remove {0} unmatched objects"
-msgstr "Supprimer {0} objets sans correspondance"
-
 msgid "Remove selected matches"
 msgstr "Supprimer les correspondances sélectionnées"
 
+msgid "Remove ({0})"
+msgstr ""
+
 msgid "Conflate"
 msgstr "Assembler"
 
@@ -29612,8 +29732,11 @@ msgstr "Assembler les objets sélectionnés"
 msgid "Conflation: {0}"
 msgstr "Assemblage : {0}"
 
-msgid "Cannot replace geometry."
-msgstr "Ne peut pas remplacer la géométrie."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
+msgstr ""
 
 msgid "Zoom to selected primitive(s)"
 msgstr "Agrandir pour sélectionner les primitives"
@@ -29624,23 +29747,130 @@ msgstr "Sélectionner les primitives retenues"
 msgid "Select the primitives currently selected in the list"
 msgstr "Sélectionner les primitives actuellement retenues dans la liste"
 
-msgid "Match finder settings"
-msgstr "Réglages de recherche de correspondance"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
 
-msgid "Match finder method"
-msgstr "Méthode de recherche de correspondance"
+msgid "Sorting scores"
+msgstr ""
 
-msgid "Threshold distance"
-msgstr "Seuil de distance"
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr "Objet"
+
+msgid "Conflate object pair"
+msgstr "Combiner les objets"
+
+msgid "Cannot replace geometry."
+msgstr "Ne peut pas remplacer la géométrie."
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] "{0} objet ajouté au calque sujet"
+msgstr[1] "{0} objets ajoutés au calque sujet"
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr "Supprimer {0} objets sans correspondance"
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Poids"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
+msgstr ""
+
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
+msgstr ""
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
-msgstr "Une distance plus grande que cela donnera un score de zéro"
+msgid "Matching"
+msgstr ""
 
-msgid "Centroid distance"
-msgstr "Distance du centroïde"
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
 
-msgid "Hausdorff distance"
-msgstr "Distance de Hausdorff"
+msgid "<Please select data>"
+msgstr ""
 
 msgid "Configure conflation settings"
 msgstr "Configurer les paramétres d’assemblage"
@@ -29648,14 +29878,32 @@ msgstr "Configurer les paramétres d’assemblage"
 msgid "Generate matches"
 msgstr "Générer les correspondances"
 
-msgid "Layer:"
-msgstr "Calque :"
+msgid "Reference:"
+msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
-msgstr "{0} : 0 / {1} : 0 / {2} : 0"
+msgid "Subject:"
+msgstr ""
 
-msgid "Subject"
-msgstr "Objet"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Remplacer la géométrie"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
+msgstr ""
 
 msgid "Selections must be made for both reference and subject."
 msgstr ""
@@ -29688,11 +29936,26 @@ msgstr "Sélection vide"
 msgid "Freeze reference selection"
 msgstr "Geler la sélection de référence"
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
-msgstr "{0} : {1} / {2} : {3} / {4} : {5}"
+msgid "Disambiguating"
+msgstr ""
 
-msgid "Invalid reference or subject"
-msgstr "Référence ou sujet invalide"
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
+msgstr ""
+
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
+msgstr ""
 
 msgid "Download OSM data continuously"
 msgstr "Télécharger les données OSM en continu"
@@ -30810,6 +31073,33 @@ msgstr "Importer des images vectorielles"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "Fichiers SVG [greffon ImportVec] (*.svg)"
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -31072,9 +31362,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr "Remplacer la géométrie"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -32420,9 +32707,6 @@ msgstr "Éditer les données GPS de la photo"
 msgid "Please select an image first."
 msgstr "Veuillez sélectionner une image d''abord."
 
-msgid "No image selected"
-msgstr "Pas d''image sélectionnée"
-
 msgid "(Empty values delete the according fields.)"
 msgstr "(Les valeurs vides suppriment les champs correspondants.)"
 
@@ -33432,6 +33716,12 @@ msgstr ""
 "Attention : l’élément de fin ''{0}'' situé à la position ({1},{2}) dans le "
 "contenu du groupe de modifications n’est pas supporté. Abandon."
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr "Greffon Signalisation Routière"
 
@@ -33565,9 +33855,6 @@ msgstr "Configurer les préférences du calcul d’itinéraire"
 msgid "Speed (Km/h)"
 msgstr "Vitesse (Km/h)"
 
-msgid "Weight"
-msgstr "Poids"
-
 msgid "Enter weight values"
 msgstr "Entrer les valeurs du poids"
 
diff --git a/i18n/po/ga.po b/i18n/po/ga.po
index b1f2da6..ffd2b8c 100644
--- a/i18n/po/ga.po
+++ b/i18n/po/ga.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2015-05-17 11:43+0000\n"
 "Last-Translator: Thorsten <Unknown>\n"
 "Language-Team: Irish <ga at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:50+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:49+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
 msgstr ""
@@ -1387,7 +1387,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7917,6 +7917,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9231,6 +9237,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14446,6 +14455,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14454,6 +14471,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14899,6 +14920,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14911,9 +14944,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14926,6 +14965,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15717,10 +15759,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15840,7 +15882,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16167,6 +16209,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16199,7 +16246,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16319,6 +16366,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16487,6 +16539,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24829,6 +24886,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24959,18 +25019,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25569,10 +25668,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25620,9 +25719,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25654,9 +25750,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25762,16 +25855,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25825,6 +25918,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25893,6 +25989,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25914,6 +26016,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25940,6 +26048,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25954,6 +26065,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25996,18 +26110,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26504,6 +26606,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26537,6 +26642,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26624,12 +26734,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26730,9 +26866,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27309,14 +27442,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27347,13 +27472,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27365,7 +27487,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27377,22 +27502,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27401,13 +27633,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27440,10 +27690,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28471,6 +28736,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28722,9 +29014,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29966,9 +30255,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30949,6 +31235,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31078,9 +31370,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/gl.po b/i18n/po/gl.po
index 56e8127..91bff36 100644
--- a/i18n/po/gl.po
+++ b/i18n/po/gl.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2016-01-01 15:11+0000\n"
 "Last-Translator: Marcos Lans <Unknown>\n"
 "Language-Team: Galician <proxecto at trasno.net>\n"
@@ -16,8 +16,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:51+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:49+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: gl\n"
 "X-Poedit-Language: Galician\n"
 
@@ -1513,7 +1513,7 @@ msgstr "Debuxar liñas entre puntos gps sen procesar."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Cambia a configuración global «{0}»."
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -8252,6 +8252,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9602,6 +9608,9 @@ msgstr "Versión da API: {0}"
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Convertir a capa GPX"
 
@@ -14969,6 +14978,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14977,6 +14994,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -15422,6 +15443,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -15434,9 +15467,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -15449,6 +15488,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -16240,10 +16282,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -16363,7 +16405,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16690,6 +16732,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16722,7 +16769,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16845,6 +16892,11 @@ msgstr "Complemento para importar imaxes referenciadas espacialmente"
 msgid "Import vector graphics (SVG)"
 msgstr "Importar graficos vectoriais (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -17026,6 +17078,11 @@ msgid "Plugin for reverting changesets"
 msgstr "Complemento para desfacer conxuntos de cambios"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -25385,6 +25442,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -25515,18 +25575,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -26125,10 +26224,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -26176,9 +26275,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -26210,9 +26306,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -26318,16 +26411,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -26381,6 +26474,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -26449,6 +26545,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -26470,6 +26572,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -26496,6 +26604,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -26510,6 +26621,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26552,18 +26666,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -27061,6 +27163,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "Nome:"
 
@@ -27094,6 +27199,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -27181,12 +27291,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -27287,9 +27423,6 @@ msgstr ""
 msgid "on polygon"
 msgstr "nun polígono"
 
-msgid "Add address"
-msgstr "Engadir enederezo"
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27880,14 +28013,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr "Esquemas de cores"
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27918,13 +28043,10 @@ msgstr "Configurar"
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27936,7 +28058,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27948,22 +28073,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Peso"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27972,13 +28204,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -28011,10 +28261,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -29046,6 +29311,33 @@ msgstr "Importar gráficos vectoriais"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -29297,9 +29589,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -30549,9 +30838,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -31534,6 +31820,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31663,9 +31955,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr "Peso"
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/he.po b/i18n/po/he.po
index 84ca466..b211e34 100644
--- a/i18n/po/he.po
+++ b/i18n/po/he.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2013-03-30 13:38+0000\n"
 "Last-Translator: Dirk Stöcker <launchpad at dstoecker.de>\n"
 "Language-Team: Hebrew <he at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:53+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:51+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: he\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1392,7 +1392,7 @@ msgstr "צייר קווים בין נקודות ה-gps הגולמיות."
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7945,6 +7945,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9259,6 +9265,9 @@ msgstr "גירסת API: {0}"
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "המר לשכבת GPX"
 
@@ -14488,6 +14497,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14496,6 +14513,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14941,6 +14962,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14953,9 +14986,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14968,6 +15007,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15759,10 +15801,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15882,7 +15924,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16209,6 +16251,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16241,7 +16288,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16361,6 +16408,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16529,6 +16581,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24871,6 +24928,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -25001,18 +25061,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25611,10 +25710,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25662,9 +25761,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25696,9 +25792,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25804,16 +25897,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25867,6 +25960,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25935,6 +26031,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25956,6 +26058,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25982,6 +26090,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25996,6 +26107,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26038,18 +26152,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26546,6 +26648,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26579,6 +26684,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26666,12 +26776,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26772,9 +26908,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27351,14 +27484,6 @@ msgstr "מחק את הסכמה הנבחרת מהרשימה"
 msgid "Color Schemes"
 msgstr "סכמות צבעים"
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27389,13 +27514,10 @@ msgstr "קבע תצורה"
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27407,7 +27529,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27419,22 +27544,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27443,13 +27675,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27482,10 +27732,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28513,6 +28778,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28764,9 +29056,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -30012,9 +30301,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30995,6 +31281,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31124,9 +31416,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/hi.po b/i18n/po/hi.po
index 5595763..7a85ce9 100644
--- a/i18n/po/hi.po
+++ b/i18n/po/hi.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2009-11-14 16:28+0000\n"
 "Last-Translator: nipunreddevil <nipunreddevil at gmail.com>\n"
 "Language-Team: Hindi <hi at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:53+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:52+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: hi\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1388,7 +1388,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7918,6 +7918,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9232,6 +9238,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14447,6 +14456,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14455,6 +14472,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14900,6 +14921,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14912,9 +14945,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14927,6 +14966,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15718,10 +15760,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15841,7 +15883,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16168,6 +16210,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16200,7 +16247,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16320,6 +16367,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16488,6 +16540,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24830,6 +24887,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24960,18 +25020,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25570,10 +25669,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25621,9 +25720,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25655,9 +25751,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25763,16 +25856,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25826,6 +25919,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25894,6 +25990,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25915,6 +26017,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25941,6 +26049,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25955,6 +26066,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25997,18 +26111,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26505,6 +26607,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26538,6 +26643,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26625,12 +26735,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26731,9 +26867,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27310,14 +27443,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27348,13 +27473,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27366,7 +27488,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27378,22 +27503,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27402,13 +27634,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27441,10 +27691,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28472,6 +28737,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28723,9 +29015,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29967,9 +30256,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30950,6 +31236,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31079,9 +31371,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/hr.po b/i18n/po/hr.po
index 1a3edc2..19c8258 100644
--- a/i18n/po/hr.po
+++ b/i18n/po/hr.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2016-01-04 15:56+0000\n"
 "Last-Translator: gogo <trebelnik2 at gmail.com>\n"
 "Language-Team: Croatian <hr at li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:13+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:09+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: hr\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1454,7 +1454,7 @@ msgstr "Nacrtaj linije između raw gps točaka."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Toggles the global setting ''{0}''."
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -8040,6 +8040,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9379,6 +9385,9 @@ msgstr "API verzija: {0}"
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14597,6 +14606,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14605,6 +14622,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -15050,6 +15071,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -15062,9 +15095,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -15077,6 +15116,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15868,10 +15910,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15991,7 +16033,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16318,6 +16360,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16350,7 +16397,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16470,6 +16517,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16638,6 +16690,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24980,6 +25037,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -25110,18 +25170,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25720,10 +25819,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25771,9 +25870,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25805,9 +25901,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25913,16 +26006,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25976,6 +26069,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -26044,6 +26140,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -26065,6 +26167,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -26091,6 +26199,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -26105,6 +26216,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26147,18 +26261,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26655,6 +26757,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26688,6 +26793,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26775,12 +26885,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26881,9 +27017,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27460,14 +27593,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27498,13 +27623,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27516,7 +27638,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27528,22 +27653,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Težina"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27552,13 +27784,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27591,10 +27841,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28622,6 +28887,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28873,9 +29165,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -30121,9 +30410,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -31104,6 +31390,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31233,9 +31525,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr "Brzina (Km/h)"
 
-msgid "Weight"
-msgstr "Težina"
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/ht.po b/i18n/po/ht.po
index 67f5bae..3ac5f24 100644
--- a/i18n/po/ht.po
+++ b/i18n/po/ht.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2010-03-11 21:17+0000\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: Haitian; Haitian Creole <ht at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:52+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:50+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1388,7 +1388,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7918,6 +7918,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9232,6 +9238,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14447,6 +14456,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14455,6 +14472,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14900,6 +14921,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14912,9 +14945,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14927,6 +14966,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15718,10 +15760,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15841,7 +15883,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16168,6 +16210,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16200,7 +16247,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16320,6 +16367,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16488,6 +16540,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24830,6 +24887,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24960,18 +25020,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25570,10 +25669,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25621,9 +25720,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25655,9 +25751,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25763,16 +25856,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25826,6 +25919,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25894,6 +25990,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25915,6 +26017,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25941,6 +26049,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25955,6 +26066,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25997,18 +26111,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26505,6 +26607,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26538,6 +26643,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26625,12 +26735,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26731,9 +26867,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27310,14 +27443,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27348,13 +27473,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27366,7 +27488,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27378,22 +27503,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27402,13 +27634,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27441,10 +27691,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28472,6 +28737,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28723,9 +29015,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29967,9 +30256,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30950,6 +31236,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31079,9 +31371,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/hu.po b/i18n/po/hu.po
index 3e8b827..38aad94 100644
--- a/i18n/po/hu.po
+++ b/i18n/po/hu.po
@@ -8,16 +8,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
-"PO-Revision-Date: 2017-02-22 23:11+0000\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
+"PO-Revision-Date: 2017-03-13 23:18+0000\n"
 "Last-Translator: Báthory Péter <bathory86p at gmail.com>\n"
 "Language-Team: Hungarian <kde-l10n-hu at kde.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:54+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:52+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: hu\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1511,8 +1511,8 @@ msgstr "Vonalak rajzolása a GPS-ből származó pontok között."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Átállítja a(z) \"{0}\" globális beállítást."
 
-msgid "Encourage/discourage upload"
-msgstr "Feltöltés támogatása/ellenzése"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "Vonalak szétválasztása"
@@ -8550,6 +8550,13 @@ msgstr ""
 "indításakor.<br>Manuálisan is megnyithatod a Fájl menüből, vagy az "
 "eszközsorról.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr "Nagyítás a letöltött adatokra"
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+"Válaszd ki, ha szeretnél ránagyítani az összes újonnan letöltött adatra."
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -10048,6 +10055,9 @@ msgstr "API verzió: {0}"
 msgid "Upload is discouraged"
 msgstr "Feltöltés nem javasolt"
 
+msgid "Upload is blocked"
+msgstr "Feltöltés blokkolva"
+
 msgid "Convert to GPX layer"
 msgstr "Átalakítás GPX réteggé"
 
@@ -11986,6 +11996,7 @@ msgstr "Pontok és útszakaszok színezése az időbélyegük alapján."
 msgid ""
 "Collected points and track segments for a position and displayed as heat map."
 msgstr ""
+"Egy pontba gyűjtött pontok és nyomvonal szakaszok, hőtérképként megjelenítve."
 
 msgid "Allows to tune the track coloring for different average speeds."
 msgstr "Lehetővé teszi a színezés hangolását különböző sebességekhez."
@@ -15973,6 +15984,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "lakóterület"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "bozót"
@@ -15981,6 +16000,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr "erdő"
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "kapcsolódó utca"
@@ -16426,6 +16449,18 @@ msgstr "VoGIS: Höhen und Gelände"
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr "imagico.de OSM képek térképezéshez: Rila- és Pirin-hegységek"
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr "OpenStreetMap (belga stílus)"
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr "OpenStreetMap (belga stílus – francia)"
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr "OpenStreetMap (belga stílus – holland)"
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr "OpenStreetMap (belga stílus – német)"
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr "AGIV Flanders legfrissebb légifelvételei"
 
@@ -16438,9 +16473,15 @@ msgstr "AGIV Flanders GRB"
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr numerical imagery (2013)"
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr "URBISnl numerical imagery (2013)"
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr "URBIS 2009 légifelvétel"
 
@@ -16453,6 +16494,9 @@ msgstr "URBIS 2014 légifelvétel"
 msgid "URBIS 2015 aerial imagery"
 msgstr "URBIS 2015 légifelvétel"
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr "SPW(allonie) PICC numerical imagery"
 
@@ -17260,11 +17304,11 @@ msgstr "Stadt Zürich Übersichtsplan (Strassen, Gebäude, Hausnummer)"
 msgid "Stadt Zürich Luftbild 2011"
 msgstr "Stadt Zürich Luftbild 2011"
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
-msgstr "Légifotó Solothurn kanton RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
+msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
-msgstr "Légifotó Solothurn kanton, infravörös (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
+msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
 msgstr "Canton de Génève 5cm (SITG 2011)"
@@ -17384,8 +17428,8 @@ msgstr "Texas ortofotó"
 msgid "Philadelphia 2015 Imagery"
 msgstr "Philadelphia 2015 légifelvétel"
 
-msgid "MD 2014 6 Inch Aerial Imagery"
-msgstr "MD 2016 hat colos légifelvétel"
+msgid "MD Latest 6 Inch Aerial Imagery"
+msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
 msgstr "MD három colos légifelvétel"
@@ -17725,6 +17769,11 @@ msgstr ""
 "könnyítése céljából készült. A basemap.at-ra van optimalizálva."
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -17771,9 +17820,8 @@ msgstr ""
 "Egy parancssort valósít meg és lehetővé teszi a saját parancsok létrehozását "
 "is. Nézd meg a hivatkozást a szabvány parancsokhoz (arc, circle stb.)"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
-"(Figyelem, kísérleti!) Eszköz az adatok egyesítésére (összefésülésére)."
 
 msgid "Downloads new data when you pan/zoom"
 msgstr "Új adatokat tölt le amikor mozgatod a térképet vagy zoomolsz"
@@ -17922,6 +17970,11 @@ msgstr "Bővítmény georeferált képek betöltésére"
 msgid "Import vector graphics (SVG)"
 msgstr "Vektorgrafikák importálása (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr "A bővítmény leegyszerűsíti a beltéri folyosók térképezését."
 
@@ -18137,6 +18190,11 @@ msgid "Plugin for reverting changesets"
 msgstr "Bővítmény módosításcsomagok visszavonásához"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -26618,6 +26676,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr "rövidített utca név"
 
@@ -26759,20 +26820,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr "Pont duplikálja a szülővonal címkéit"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
-msgstr ""
-"nincs megadott wikipédia nyelv, használandó a ''wikipedia''=''language:page "
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
 "title''"
+msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
-msgstr "ismeretlen nyelv azonosító a wikipédia cimkében"
+msgid "wikipedia tag has an unknown language prefix"
+msgstr ""
 
-msgid "deprecated format for wikipedia tag"
-msgstr "elavult Wikipédia címke formátum"
+msgid "wikipedia tag format is deprecated"
+msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr "''wikipedia''=''language:page title''"
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr "Ikonok elrejtése alacsony nagyításon"
 
@@ -27398,11 +27496,11 @@ msgstr "Összes kép:"
 msgid "images"
 msgstr "képek"
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
-msgstr "Nem sikerült beolvasni a betűtípus fájlt innen: „{0}”"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
+msgstr ""
 
 msgid "Mapillary"
 msgstr "Mapillary"
@@ -27449,9 +27547,6 @@ msgstr "Összekapcsolási mód"
 msgid "Join/unjoin pictures"
 msgstr "Képek össze/szétkapcsolása"
 
-msgid "Join Mapillary pictures"
-msgstr "Mapillary képek összekapcsolása"
-
 msgid "Submit changeset"
 msgstr "Módosításcsomag beküldése"
 
@@ -27483,9 +27578,6 @@ msgstr "Képek feltöltése."
 msgid "Walk mode"
 msgstr "Gyalogos mód"
 
-msgid "Start walk mode"
-msgstr "Gyalogos mód indítása"
-
 msgid "Zoom to selected image"
 msgstr "Nagyítása a kiválasztott képre"
 
@@ -27591,18 +27683,18 @@ msgstr "Mapillary előzmények"
 msgid "Open Mapillary history dialog"
 msgstr "Mapillary előzmény ablak megnyitása"
 
+msgid "No image selected"
+msgstr "Nincs kép kiválasztva"
+
+msgid "Press \"{0}\" to download images"
+msgstr ""
+
 msgid "Mapillary picture"
 msgstr "Mapillary kép"
 
 msgid "Open Mapillary window"
 msgstr "Mapillary ablak megnyitása"
 
-msgid "Mapillary dialog"
-msgstr "Mapillary ablak"
-
-msgid "Open Mapillary main dialog"
-msgstr "Fő Mapillary ablak megnyitása"
-
 msgid "Next picture"
 msgstr "Következő kép"
 
@@ -27654,6 +27746,9 @@ msgstr "Képhez ugrás az előző/következő gomb megnyomásakor"
 msgid "Preview images when hovering its icon"
 msgstr "Kép előnézete, ha az egér az ikon fölött áll"
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr "Letöltési mód"
 
@@ -27723,6 +27818,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -27744,6 +27845,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] "{0} kép törölve"
@@ -27770,6 +27877,9 @@ msgstr[1] "{0} kép elfordítva"
 msgid "2 images unjoined"
 msgstr "2 kép szétválasztva"
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr "minden, a látható területen"
 
@@ -27786,6 +27896,9 @@ msgstr ""
 "A letöltött OSM terület túl nagy. A letöltési mód a réteg újrakezdéséig "
 "módosítva lett OSM területre."
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr "Letöltés"
 
@@ -27829,18 +27942,6 @@ msgstr "Nem vagy bejelentkezve Mapillary-be"
 msgid "Uploading: {0}"
 msgstr "Feltöltés: {0}"
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr "A(z) „{0}” kép kulcs érvénytelen!"
-
-msgid "The image key must not be null here!"
-msgstr "A kép kulcs nem lehet null!"
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr "A(z) „{0}” sorozat kulcs érvénytelen!"
-
-msgid "The sequence key must not be null here!"
-msgstr "A sorozat kulcs nem lehet null!"
-
 msgid "NanoLog"
 msgstr "NanoLog"
 
@@ -28350,6 +28451,9 @@ msgstr "Épület:"
 msgid "Tags:"
 msgstr "Cimkék:"
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "Név:"
 
@@ -28383,6 +28487,11 @@ msgstr ""
 msgid "Created area"
 msgstr "Létrehozott terület"
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -28470,12 +28579,38 @@ msgstr "pontok egyesítése"
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -28578,9 +28713,6 @@ msgstr "Az épületeken belül nem található lakcím pont"
 msgid "on polygon"
 msgstr "poligonon"
 
-msgid "Add address"
-msgstr "Lakcím hozzáadása"
-
 msgid "Helping tool for tag address"
 msgstr "Lakcímek címkézését segítő eszköz"
 
@@ -29170,14 +29302,6 @@ msgstr "Töröld a listából a kiválasztott sémát."
 msgid "Color Schemes"
 msgstr "Színsémák"
 
-msgid "Conflate object pair"
-msgstr "Objektum párok összeolvasztása"
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] "{0} objektum a tárgy réteghez adva"
-msgstr[1] "{0} objektum a tárgy réteghez adva"
-
 msgid "Conflation"
 msgstr "Összevon"
 
@@ -29208,15 +29332,12 @@ msgstr "Konfiguráció"
 msgid "Configure conflation options"
 msgstr "Összeolvasztás beállításai"
 
-msgid "Delete {0} conflation matches"
-msgstr "{0} összevonás egyezés törlése"
-
-msgid "Remove {0} unmatched objects"
-msgstr "{0} nem egyező objektum eltávolítása"
-
 msgid "Remove selected matches"
 msgstr "Kiválasztott egyezések eltávolítása"
 
+msgid "Remove ({0})"
+msgstr ""
+
 msgid "Conflate"
 msgstr "Összevon"
 
@@ -29226,8 +29347,11 @@ msgstr "Kiválasztott objektumok összevonása"
 msgid "Conflation: {0}"
 msgstr "Összeolvasztás: {0}"
 
-msgid "Cannot replace geometry."
-msgstr "Nem lehet lecserélni a geometriát."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
+msgstr ""
 
 msgid "Zoom to selected primitive(s)"
 msgstr "Kijelölt elemekre nagyítás"
@@ -29238,23 +29362,130 @@ msgstr "Kiválasztott elemek kijelölése"
 msgid "Select the primitives currently selected in the list"
 msgstr "Kijelöli a listában jelenleg kiválasztott elemeket"
 
-msgid "Match finder settings"
-msgstr "Egyezés kereső beállításai"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr "Tárgy"
+
+msgid "Conflate object pair"
+msgstr "Objektum párok összeolvasztása"
+
+msgid "Cannot replace geometry."
+msgstr "Nem lehet lecserélni a geometriát."
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] "{0} objektum a tárgy réteghez adva"
+msgstr[1] "{0} objektum a tárgy réteghez adva"
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr "{0} nem egyező objektum eltávolítása"
 
-msgid "Match finder method"
-msgstr "Egyezés kereső módszer"
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
 
-msgid "Threshold distance"
-msgstr "Küszöbtávolság"
+msgid " Max: "
+msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
-msgstr "Az ennél nagyobb távolságok nulla súlyt kapnak"
+msgid "Filter by area. Min: "
+msgstr ""
 
-msgid "Centroid distance"
-msgstr "Centroid távolság"
+msgid "Filter by window. Buffer: "
+msgstr ""
 
-msgid "Hausdorff distance"
-msgstr "Hausdorff távolság"
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
+msgstr ""
+
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
+msgstr ""
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
+
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
+msgstr ""
 
 msgid "Configure conflation settings"
 msgstr "Összeolvasztás beállításai"
@@ -29262,14 +29493,32 @@ msgstr "Összeolvasztás beállításai"
 msgid "Generate matches"
 msgstr "Egyezések keresése"
 
-msgid "Layer:"
-msgstr "Réteg:"
+msgid "Reference:"
+msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
-msgstr "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
+msgstr ""
 
-msgid "Subject"
-msgstr "Tárgy"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Geometria cseréje"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
+msgstr ""
 
 msgid "Selections must be made for both reference and subject."
 msgstr "A referencia és a cél számára is kell kijelölés"
@@ -29301,11 +29550,26 @@ msgstr "Üres kijelölés"
 msgid "Freeze reference selection"
 msgstr "Referencia kijelölés fagyasztása"
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
-msgstr "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
+msgstr ""
 
-msgid "Invalid reference or subject"
-msgstr "Érvénytelen referencia vagy cél"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
+msgstr ""
 
 msgid "Download OSM data continuously"
 msgstr "OSM adatok folyamatos letöltése"
@@ -30368,6 +30632,33 @@ msgstr "Vektorgrafikák betöltés"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "SVG fájlok [ImportVec plugin] (*.svg)"
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -30619,9 +30910,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr "Geometria cseréje"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -31946,9 +32234,6 @@ msgstr "Fénykép GPS-adatok szerkesztése"
 msgid "Please select an image first."
 msgstr "Előbb válassz ki egy képet."
 
-msgid "No image selected"
-msgstr "Nincs kép kiválasztva"
-
 msgid "(Empty values delete the according fields.)"
 msgstr "(Üres érték törli a mezőt.)"
 
@@ -32961,6 +33246,12 @@ msgstr ""
 "Figyelmeztetés: nem támogatott „{0}” lezáróelem a módosításcsomag "
 "tartalmában az alábbi helyen ({1},{2}). Kihagyás."
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr "Közlekedés jelzőtábla bővítmény"
 
@@ -33090,9 +33381,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr "Sebesség (Km/h)"
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/hy.po b/i18n/po/hy.po
index 8ad4681..0dfdc0f 100644
--- a/i18n/po/hy.po
+++ b/i18n/po/hy.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2011-04-13 21:51+0000\n"
 "Last-Translator: Gev777 <Unknown>\n"
 "Language-Team: Armenian <hy at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:36+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:36+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: hy\n"
 
 msgid "Cancel"
@@ -1388,7 +1388,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7918,6 +7918,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9232,6 +9238,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14447,6 +14456,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14455,6 +14472,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14900,6 +14921,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14912,9 +14945,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14927,6 +14966,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15718,10 +15760,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15841,7 +15883,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16168,6 +16210,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16200,7 +16247,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16320,6 +16367,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16488,6 +16540,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24830,6 +24887,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24960,18 +25020,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25570,10 +25669,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25621,9 +25720,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25655,9 +25751,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25763,16 +25856,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25826,6 +25919,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25894,6 +25990,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25915,6 +26017,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25941,6 +26049,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25955,6 +26066,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25997,18 +26111,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26505,6 +26607,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26538,6 +26643,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26625,12 +26735,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26731,9 +26867,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27310,14 +27443,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27348,13 +27473,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27366,7 +27488,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27378,22 +27503,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27402,13 +27634,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27441,10 +27691,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28472,6 +28737,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28723,9 +29015,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29967,9 +30256,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30950,6 +31236,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31079,9 +31371,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/ia.po b/i18n/po/ia.po
index 36e1c60..26fee7c 100644
--- a/i18n/po/ia.po
+++ b/i18n/po/ia.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2011-08-29 01:02+0000\n"
 "Last-Translator: Emilio Sepulveda <Unknown>\n"
 "Language-Team: Interlingua <ia at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:55+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:53+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: ia\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1388,7 +1388,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7918,6 +7918,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9232,6 +9238,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14447,6 +14456,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14455,6 +14472,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14900,6 +14921,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14912,9 +14945,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14927,6 +14966,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15718,10 +15760,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15841,7 +15883,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16168,6 +16210,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16200,7 +16247,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16320,6 +16367,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16488,6 +16540,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24830,6 +24887,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24960,18 +25020,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25570,10 +25669,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25621,9 +25720,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25655,9 +25751,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25763,16 +25856,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25826,6 +25919,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25894,6 +25990,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25915,6 +26017,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25941,6 +26049,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25955,6 +26066,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25997,18 +26111,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26505,6 +26607,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26538,6 +26643,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26625,12 +26735,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26731,9 +26867,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27310,14 +27443,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27348,13 +27473,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27366,7 +27488,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27378,22 +27503,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27402,13 +27634,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27441,10 +27691,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28472,6 +28737,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28723,9 +29015,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29967,9 +30256,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30950,6 +31236,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31079,9 +31371,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/id.po b/i18n/po/id.po
index 758fc67..e1fbec8 100644
--- a/i18n/po/id.po
+++ b/i18n/po/id.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2016-03-10 03:36+0000\n"
 "Last-Translator: Ezagren <ezagren at gmail.com>\n"
 "Language-Team: Indonesian <id at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:56+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:54+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: id\n"
 "X-Language: id_ID\n"
 
@@ -1477,8 +1477,8 @@ msgstr "gambar garis diantara titik-titik kasar gps."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Toggle pengaturan global \"{0}\""
 
-msgid "Encourage/discourage upload"
-msgstr "Memicu/membatalkan memicu unggah"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "Memisahkan titik/garis"
@@ -8316,6 +8316,12 @@ msgstr ""
 "<html>Mulai otomatis ''Download dari OSM'' setiap JOSM dinyalakan.<br>Anda "
 "dapat membuka secara manual dari Menu file atau toolbar.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9745,6 +9751,9 @@ msgstr "versi API: {0}"
 msgid "Upload is discouraged"
 msgstr "Upload tidak disarankan"
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Mengkonversi ke layer GPX"
 
@@ -15442,6 +15451,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "Permukiman"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "Semak"
@@ -15450,6 +15467,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "Jalan yang terasosiasi"
@@ -15895,6 +15916,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -15907,9 +15940,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -15922,6 +15961,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -16713,10 +16755,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -16836,7 +16878,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -17167,6 +17209,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -17207,7 +17254,7 @@ msgstr ""
 "Menerapkan baris perintah dan memungkinkan untuk membuat perintah Anda. "
 "Lihat link untuk perintah standar (busur, lingkaran dll.)"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -17344,6 +17391,11 @@ msgstr "Plugin untuk mengimport gambar spasial direferensikan"
 msgid "Import vector graphics (SVG)"
 msgstr "Import grafis vektor (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -17543,6 +17595,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -25920,6 +25977,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr "mempersingkat nama jalan"
 
@@ -26050,20 +26110,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr "Titik duplikasi tag/label garis induk"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
-"tidak ada wikipedia-language yang diberikan, gunakan "
-"\"wikipedia\"=\"language:page title\""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -26684,10 +26781,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -26735,9 +26832,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -26769,9 +26863,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -26877,16 +26968,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -26940,6 +27031,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -27008,6 +27102,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -27029,6 +27129,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -27055,6 +27161,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -27069,6 +27178,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -27111,18 +27223,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr "NanoLog"
 
@@ -27705,6 +27805,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "Nama:"
 
@@ -27738,6 +27841,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -27825,12 +27933,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -27931,9 +28065,6 @@ msgstr ""
 msgid "on polygon"
 msgstr "di dalam poligon"
 
-msgid "Add address"
-msgstr "Tambahkan alamat"
-
 msgid "Helping tool for tag address"
 msgstr "Membantu alat untuk alamat tag"
 
@@ -28562,14 +28693,6 @@ msgstr "Hapus skema yang dipilih dari daftar"
 msgid "Color Schemes"
 msgstr "Skema warna"
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -28600,13 +28723,10 @@ msgstr "Konfigurasi"
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -28618,7 +28738,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -28630,22 +28753,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Berat"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -28654,13 +28884,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Ganti Geometri"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -28693,10 +28941,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -29784,6 +30047,33 @@ msgstr "Import vektor grafik"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -30045,9 +30335,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr "Ganti Geometri"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -31373,9 +31660,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -32371,6 +32655,12 @@ msgstr ""
 "Peringatan: tidak mendukung elemen akhir ''{0}'' pada isi set perubahan di "
 "posisi ({1},{2}). Dilewati."
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr "Plugin Petanda Jalan"
 
@@ -32500,9 +32790,6 @@ msgstr "Atur Pengaturan Rute"
 msgid "Speed (Km/h)"
 msgstr "Kecepatan (Km/jam)"
 
-msgid "Weight"
-msgstr "Berat"
-
 msgid "Enter weight values"
 msgstr "Masukkan nilai berat"
 
diff --git a/i18n/po/is.po b/i18n/po/is.po
index 649eb54..7ecb66e 100644
--- a/i18n/po/is.po
+++ b/i18n/po/is.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2015-11-06 00:32+0000\n"
 "Last-Translator: Stefán Örvar Sigmundsson <stefan.orvar.sigmundsson at emi.is>\n"
 "Language-Team: Icelandic <is at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:55+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:53+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: is\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1402,7 +1402,7 @@ msgstr "Teikna línu á milli GPS punkta."
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7946,6 +7946,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9267,6 +9273,9 @@ msgstr "API útgáfa: {0}"
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Breyta í GPX-lag"
 
@@ -14498,6 +14507,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14506,6 +14523,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14951,6 +14972,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14963,9 +14996,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14978,6 +15017,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15769,10 +15811,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15892,7 +15934,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16219,6 +16261,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16251,7 +16298,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16372,6 +16419,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16540,6 +16592,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24882,6 +24939,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -25012,18 +25072,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25622,10 +25721,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25673,9 +25772,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25707,9 +25803,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25815,16 +25908,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25878,6 +25971,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25946,6 +26042,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25967,6 +26069,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25993,6 +26101,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -26007,6 +26118,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26049,18 +26163,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26557,6 +26659,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26590,6 +26695,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26677,12 +26787,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26783,9 +26919,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27362,14 +27495,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27400,13 +27525,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27418,7 +27540,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27430,22 +27555,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27454,13 +27686,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27493,10 +27743,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28524,6 +28789,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28775,9 +29067,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -30019,9 +30308,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -31002,6 +31288,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31131,9 +31423,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/it.po b/i18n/po/it.po
index 495f4bb..7f10af0 100644
--- a/i18n/po/it.po
+++ b/i18n/po/it.po
@@ -4,16 +4,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm 20081003\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
-"PO-Revision-Date: 2017-02-09 13:48+0000\n"
-"Last-Translator: lang-it <Unknown>\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
+"PO-Revision-Date: 2017-03-22 08:29+0000\n"
+"Last-Translator: Moire <Unknown>\n"
 "Language-Team: Italian <talk-it at lists.openstreetmap.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:57+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:55+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: it\n"
 "X-Language: it_IT\n"
 "X-Source-Language: en\n"
@@ -1520,8 +1520,8 @@ msgstr "Disegna le linee tra i punti GPS grezzi."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Commuta l''impostazione globale ''{0}''."
 
-msgid "Encourage/discourage upload"
-msgstr "Consiglia/sconsiglia il caricamento"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "Separa percorsi"
@@ -2745,7 +2745,7 @@ msgid "objects"
 msgstr "oggetti"
 
 msgid "all nodes"
-msgstr ""
+msgstr "tutti i nodi"
 
 msgid "all ways"
 msgstr "tutti i percorsi"
@@ -3610,25 +3610,27 @@ msgid "E"
 msgstr "E"
 
 msgid "Date of imagery: {0}"
-msgstr ""
+msgstr "Immagini risalenti al: {0}"
 
 msgid "This imagery is marked as best in this region in other editors."
 msgstr ""
+"Queste immagini sono considerate la scelta migliore in questa zona  in altri "
+"editor"
 
 msgid "{0} mirror server {1}"
-msgstr ""
+msgstr "{0} server alternativo {1}"
 
 msgid "{0} mirror server"
-msgstr ""
+msgstr "{0} server alternativo"
 
 msgid "Update default entries"
 msgstr "Aggiorna le voci predefinite"
 
 msgid "Update imagery ''{0}''"
-msgstr ""
+msgstr "Aggiorna le immagini \"{0}\""
 
 msgid "Drop old imagery ''{0}''"
-msgstr ""
+msgstr "Elimina le immagini vecchie \"{0}\""
 
 msgid "Projection ''{0}'' is not found, bookmark ''{1}'' is not usable"
 msgstr ""
@@ -4617,13 +4619,13 @@ msgid "Empty role type found when expecting one of ''{0}''"
 msgstr ""
 
 msgid "Role ''{0}'' missing"
-msgstr ""
+msgstr "Manca un membro con ruolo \"{0}\""
 
 msgid "Number of ''{0}'' roles too low ({1})"
-msgstr ""
+msgstr "Numero di membri con ruolo \"{0}\" insufficiente ({1})"
 
 msgid "Number of ''{0}'' roles too high ({1})"
-msgstr ""
+msgstr "Numero di membri con ruolo \"{0}\" troppo alto ({1})"
 
 msgid "Self-intersecting ways"
 msgstr "Percorsi che si auto-intersecano"
@@ -7909,10 +7911,10 @@ msgid "Sharpness"
 msgstr "Nitidezza"
 
 msgid "Adjust colorfulness of the layer."
-msgstr "Modifica la luminosità del livello"
+msgstr "Modifica la saturazione del livello"
 
 msgid "Colorfulness"
-msgstr "Luminosità"
+msgstr "Saturazione"
 
 msgid "Merge this layer into another layer"
 msgstr "Unisci questo livello con un altro livello"
@@ -8486,6 +8488,8 @@ msgid ""
 "<html>You have unsaved changes in this editor window.<br><br>Do you want to "
 "discard these changes and reload data from layer?</html>"
 msgstr ""
+"<html>La finestra dell’editor contiene delle modifiche non salvate. Vuoi "
+"abbandonare le modifiche e ricaricare i dati dal livello?</html>"
 
 msgid "Click to close window"
 msgstr "Fai click per chiudere la finestra"
@@ -8497,6 +8501,8 @@ msgid ""
 "<html>Relation has been deleted outside editor.<br><br>Do you want to close "
 "this window?</html>"
 msgstr ""
+"<html>La relazione è stata eliminata al di fuori dell’editor.<br><br>Vuoi "
+"chiudere la finestra?</html>"
 
 msgid "Deleted relation"
 msgstr "Relazione cancellata"
@@ -8745,6 +8751,12 @@ msgstr ""
 "JOSM.<br>E'' possibile aprirla manualmente dal menu File o dalla barra degli "
 "strumenti.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr "Ingrandisci la visuale sui dati scaricati"
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr "Seleziona per ingrandire la visuale sui dati appena scaricati"
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9190,12 +9202,15 @@ msgid ""
 "Select which actions to perform for this layer, if you click the leftmost "
 "button."
 msgstr ""
+"Seleziona quale azione intraprendere per questo livello, quando premi il "
+"tasto sinistro del mouse"
 
 msgid "Check \"Upload\" to upload the changes to the OSM server."
 msgstr "Spunta \"Upload\" per inviare le modifiche al server OSM."
 
 msgid "Check \"Save\" to save the layer to the file specified on the left."
 msgstr ""
+"Scegli \"Salva\" per salvare il livello nel file specificato a sinistra."
 
 msgid "Provide a brief comment for the changes you are uploading:"
 msgstr "Crea un breve commento ai cambiamenti che sta caricando:"
@@ -9572,7 +9587,7 @@ msgstr ""
 "Esci da JOSM salvando. Le modifiche non salvate saranno caricate e/o salvate."
 
 msgid "Perform actions before restarting"
-msgstr ""
+msgstr "Esegui le azioni prima del riavvio"
 
 msgid "Restart JOSM with saving. Unsaved changes are uploaded and/or saved."
 msgstr ""
@@ -10046,7 +10061,7 @@ msgstr[0] "{0} oggetto da eliminare:"
 msgstr[1] "{0} oggetti da eliminare:"
 
 msgid "Show tile info"
-msgstr ""
+msgstr "Mostra informazioni dei tasselli"
 
 msgid "Tile Info"
 msgstr "Info Tasselli"
@@ -10055,7 +10070,7 @@ msgid "Metadata "
 msgstr "Metadata "
 
 msgid "Load tile"
-msgstr ""
+msgstr "Carica tassello"
 
 msgid "Auto zoom"
 msgstr "Zoom automatico"
@@ -10067,7 +10082,7 @@ msgid "Show errors"
 msgstr "Mostra errori"
 
 msgid "Load all tiles"
-msgstr ""
+msgstr "Carica tutti i tasselli"
 
 msgid "Load all error tiles"
 msgstr ""
@@ -10272,6 +10287,9 @@ msgstr "Versione delle API: {0}"
 msgid "Upload is discouraged"
 msgstr "Il caricamento è sconsigliato"
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Converti in un livello GPX"
 
@@ -16342,6 +16360,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "residenziale"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "incolta"
@@ -16350,6 +16376,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr "bosco"
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "strada associata (associatedStreet)"
@@ -16795,6 +16825,18 @@ msgstr "VoGIS: Höhen und Gelände"
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -16807,9 +16849,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr numerical imagery (2013)"
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr "URBIS 2009 foto aeree"
 
@@ -16822,6 +16870,9 @@ msgstr "URBIS 2014 foto aeree"
 msgid "URBIS 2015 aerial imagery"
 msgstr "URBIS 2015 foto aeree"
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr "SPW(allonie) PICC immagini numeriche"
 
@@ -17614,10 +17665,10 @@ msgstr "Stadt Zürich Übersichtsplan (Strassen, Gebäude, Hausnummer)"
 msgid "Stadt Zürich Luftbild 2011"
 msgstr "Stadt Zürich Luftbild 2011"
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -17737,7 +17788,7 @@ msgstr "Ortofoto del Texas"
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -18072,6 +18123,11 @@ msgstr ""
 "partire dai livelli di sfondo. Ottimizzato per basemap.at."
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -18118,8 +18174,8 @@ msgstr ""
 "personalizzati. Consulta il collegamento per i comandi standard (arc, circle "
 "etc.)"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
-msgstr "(Attenzione: Sperimentale!) Strumento per fondere (unire) i dati."
+msgid "Tool for conflating data (matching and merging)."
+msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
 msgstr "Scarica nuovi dati quando usi sposta/zoom"
@@ -18265,6 +18321,11 @@ msgstr "Estensione per l''importazione di immagini georeferenziate"
 msgid "Import vector graphics (SVG)"
 msgstr "Importa immagini vettoriali (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 "Questo plugin semplifica la mappatura e la modifica dei corridoi interni."
@@ -18485,6 +18546,11 @@ msgid "Plugin for reverting changesets"
 msgstr "Estensione per il ripristino dei gruppi di modifiche"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -26939,6 +27005,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr "nome abbreviato della strada"
 
@@ -27074,20 +27143,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr "Nodi che duplicano le etichette del percorso a cui appartengono"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
-msgstr ""
-"lingua wikipedia non fornita, utilizzare ''wikipedia''=''language:page "
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
 "title''"
+msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
-msgstr "prefisso linguistico sconosciuto nella etichetta wikipedia"
+msgid "wikipedia tag has an unknown language prefix"
+msgstr ""
 
-msgid "deprecated format for wikipedia tag"
-msgstr "formato deprecato per etichetta wikipedia"
+msgid "wikipedia tag format is deprecated"
+msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr "''wikipedia''=''lingua:titolo pagina''"
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr "Nascondi icone a bassi livelli di zoom"
 
@@ -27723,10 +27829,10 @@ msgstr "Immagini totali:"
 msgid "images"
 msgstr "immagini"
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -27774,9 +27880,6 @@ msgstr "modalità unisci"
 msgid "Join/unjoin pictures"
 msgstr "unisci/dividi foto"
 
-msgid "Join Mapillary pictures"
-msgstr "unisci foto Mapillary"
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -27808,9 +27911,6 @@ msgstr "Carica foto."
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr "Ingrandisci l''immagine selezionata"
 
@@ -27916,16 +28016,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
-msgstr ""
+msgid "No image selected"
+msgstr "Nessuna immagine selezionata"
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -27979,6 +28079,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -28047,6 +28150,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -28068,6 +28177,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] "Immagine {0} cancellata"
@@ -28094,6 +28209,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -28108,6 +28226,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr "Download in corso"
 
@@ -28150,18 +28271,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr "In caricamento: {0}"
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr "NanoLog"
 
@@ -28779,6 +28888,9 @@ msgstr "Edificio:"
 msgid "Tags:"
 msgstr "Etichette:"
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "Nome:"
 
@@ -28812,6 +28924,11 @@ msgstr ""
 msgid "Created area"
 msgstr "Area creata"
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr "Impossibile rilevare poligono dove selezionato."
 
@@ -28915,12 +29032,38 @@ msgstr "unione nodi"
 msgid "Merge nodes with existing nodes"
 msgstr "Fondere i nodi con i nodi esistenti"
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr "Debug"
 
 msgid "Debugging mode will write images for each processing step."
 msgstr "la modalità debugging scriverà immagini per ogni fase del processo."
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -29026,9 +29169,6 @@ msgstr "Nessun nodo indirizzo trovato all''interno dell''edificio"
 msgid "on polygon"
 msgstr "sul poligono"
 
-msgid "Add address"
-msgstr "Aggiungi indirizzo"
-
 msgid "Helping tool for tag address"
 msgstr "Strumento per etichettare l''indirizzo"
 
@@ -29682,14 +29822,6 @@ msgstr "Elimina lo schema selezionato nella lista."
 msgid "Color Schemes"
 msgstr "Schemi di colore"
 
-msgid "Conflate object pair"
-msgstr "Fonde una coppia di oggetti"
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] "Aggiunto {0} oggetto al livello subordinato"
-msgstr[1] "Aggiunti {0} oggetti al livello subordinato"
-
 msgid "Conflation"
 msgstr "Fusione"
 
@@ -29720,15 +29852,12 @@ msgstr "Configura"
 msgid "Configure conflation options"
 msgstr "Configura le opzioni di fusione"
 
-msgid "Delete {0} conflation matches"
-msgstr "Elimina {0} corrispondenze fusione"
-
-msgid "Remove {0} unmatched objects"
-msgstr "Rimuovi {0} oggeti non corrispondenti"
-
 msgid "Remove selected matches"
 msgstr "Rimuovi le corrispondenze selezionate"
 
+msgid "Remove ({0})"
+msgstr ""
+
 msgid "Conflate"
 msgstr "Fondi"
 
@@ -29738,8 +29867,11 @@ msgstr "Fondi oggetti selezionati"
 msgid "Conflation: {0}"
 msgstr "Fusione: {0}"
 
-msgid "Cannot replace geometry."
-msgstr "Impossibile rimpiazzare la geometria."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
+msgstr ""
 
 msgid "Zoom to selected primitive(s)"
 msgstr "Ingrandisci alle primitive selezionate"
@@ -29750,24 +29882,130 @@ msgstr "Seleziona primitive evidenziate"
 msgid "Select the primitives currently selected in the list"
 msgstr "Seleziona le primitive correntemente evidenziate nell''elenco"
 
-msgid "Match finder settings"
-msgstr "Impostazioni per la ricerca delle corrispondenze"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr "Oggetto"
+
+msgid "Conflate object pair"
+msgstr "Fonde una coppia di oggetti"
+
+msgid "Cannot replace geometry."
+msgstr "Impossibile rimpiazzare la geometria."
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] "Aggiunto {0} oggetto al livello subordinato"
+msgstr[1] "Aggiunti {0} oggetti al livello subordinato"
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr "Rimuovi {0} oggeti non corrispondenti"
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Peso"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
+msgstr ""
+
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
+msgstr ""
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
 
-msgid "Match finder method"
-msgstr "metodo per la ricerca delle corrispondenze"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
 
-msgid "Threshold distance"
-msgstr "Soglia distanza"
+msgid "Matching"
+msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid "Filtering"
 msgstr ""
-"Distanze superiori a questo si tradurranno in un punteggio pari a zero."
 
-msgid "Centroid distance"
-msgstr "Distanza baricentro"
+msgid "Unioning"
+msgstr ""
 
-msgid "Hausdorff distance"
-msgstr "Distanza di Hausdorff"
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
+msgstr ""
 
 msgid "Configure conflation settings"
 msgstr "Configura impostazioni di fusione"
@@ -29775,14 +30013,32 @@ msgstr "Configura impostazioni di fusione"
 msgid "Generate matches"
 msgstr "Genera corrispondenze"
 
-msgid "Layer:"
-msgstr "Livello:"
+msgid "Reference:"
+msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
-msgstr "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
+msgstr ""
 
-msgid "Subject"
-msgstr "Oggetto"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Sostituisci dimensioni e posizione"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
+msgstr ""
 
 msgid "Selections must be made for both reference and subject."
 msgstr ""
@@ -29815,11 +30071,26 @@ msgstr "Nessuna selezione"
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
-msgstr "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
 
-msgid "Invalid reference or subject"
-msgstr "Riferimento all''oggetto non valido"
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
+msgstr ""
+
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
+msgstr ""
 
 msgid "Download OSM data continuously"
 msgstr ""
@@ -30923,6 +31194,33 @@ msgstr "Importa immagini vettoriali"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "File SVG [estensione ImportVec] (*.svg)"
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -31185,9 +31483,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr "Sostituisci dimensioni e posizione"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -32539,9 +32834,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr "Prima è necessario seelzionare un''immagine."
 
-msgid "No image selected"
-msgstr "Nessuna immagine selezionata"
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -33552,6 +33844,12 @@ msgstr ""
 "Attenzione: elemento finale ''''{0}'''' non supportato nel contenuto del "
 "gruppo di modifiche alla posizione ({1},{2}). Tralascio."
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr "Estensione segnali stradali"
 
@@ -33684,9 +33982,6 @@ msgstr "Imposta le preferenze di navigazione"
 msgid "Speed (Km/h)"
 msgstr "Velocità (Km/h)"
 
-msgid "Weight"
-msgstr "Peso"
-
 msgid "Enter weight values"
 msgstr "Inserire i valori di peso"
 
diff --git a/i18n/po/ja.po b/i18n/po/ja.po
index 7ac05d9..21118d0 100644
--- a/i18n/po/ja.po
+++ b/i18n/po/ja.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
-"PO-Revision-Date: 2017-01-07 13:55+0000\n"
-"Last-Translator: Masao Takaku <Unknown>\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
+"PO-Revision-Date: 2017-03-22 16:46+0000\n"
+"Last-Translator: fujimoto <fujimoto at internet.ne.jp>\n"
 "Language-Team: Japanese <tr at openstreetmap.jp>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:58+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:55+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "X-Poedit-Country: JAPAN\n"
 "Language: ja\n"
 "X-Poedit-Language: Japanese\n"
@@ -59,7 +59,7 @@ msgid "Background Terms of Use"
 msgstr "背景利用規約"
 
 msgid "Opening link not supported on current platform (''{0}'')"
-msgstr "リンクを開く操作は、このプラットフォームには対応していません(''{0}'')"
+msgstr "リンクを開く操作は、このプラットフォームでは対応していません(''{0}'')"
 
 msgid "Executing platform startup hook"
 msgstr "プラットフォームスタートアップフックを実行中"
@@ -71,13 +71,13 @@ msgid "Help"
 msgstr "ヘルプ"
 
 msgid "Initializing internal boundaries data"
-msgstr ""
+msgstr "内部の境界線データを初期化中"
 
 msgid "Initializing OSM API"
 msgstr "OSM APIを初期化中"
 
 msgid "Initializing internal traffic data"
-msgstr ""
+msgstr "内部の交通データを初期化中"
 
 msgid "Initializing validator"
 msgstr "妥当性検査を初期化中"
@@ -502,7 +502,7 @@ msgid "Duplicate"
 msgstr "複製"
 
 msgid "Duplicate selection."
-msgstr ""
+msgstr "選択中のものを複製します。"
 
 msgid "Exit"
 msgstr "終了"
@@ -1402,8 +1402,8 @@ msgstr "生のGPS測位点間に線を描画"
 msgid "Toggles the global setting ''{0}''."
 msgstr "グローバル設定 ''{0}'' を切り替えます。"
 
-msgid "Encourage/discourage upload"
-msgstr "アップロードを促進/抑制"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "ウェイを引き離す"
@@ -2512,7 +2512,7 @@ msgid "objects"
 msgstr "オブジェクト"
 
 msgid "all nodes"
-msgstr ""
+msgstr "すべてのノード"
 
 msgid "all ways"
 msgstr "全てのウェイ"
@@ -3295,16 +3295,16 @@ msgid "{0} mirror server {1}"
 msgstr ""
 
 msgid "{0} mirror server"
-msgstr ""
+msgstr "{0}台のミラーサーバ"
 
 msgid "Update default entries"
 msgstr "既定のエントリを更新"
 
 msgid "Update imagery ''{0}''"
-msgstr ""
+msgstr "画像 ''{0}'' を更新"
 
 msgid "Drop old imagery ''{0}''"
-msgstr ""
+msgstr "古い画像 ''{0}'' を削除"
 
 msgid "Projection ''{0}'' is not found, bookmark ''{1}'' is not usable"
 msgstr "投影法 ''{0}'' が見つかりません。ブックマーク ''{1}'' は利用できません。"
@@ -3631,7 +3631,7 @@ msgid "standard parallels are opposite"
 msgstr ""
 
 msgid "Cassini-Soldner"
-msgstr ""
+msgstr "カッシニ・ゾルドネル図法"
 
 msgid "Double Stereographic"
 msgstr "ダブルステレオグラフィック図法"
@@ -3649,7 +3649,7 @@ msgid "Mercator"
 msgstr "メルカトル"
 
 msgid "Oblique Mercator"
-msgstr ""
+msgstr "斜軸メルカトル図法"
 
 msgid "Unsuitable parameters ''{0}'' and ''{1}'' for two point method."
 msgstr ""
@@ -4039,13 +4039,13 @@ msgid "Multipolygon is not closed"
 msgstr "マルチポリゴンが閉じられていません"
 
 msgid "Multipolygon rings share node(s)"
-msgstr ""
+msgstr "マルチポリゴンの輪がノードを共有している"
 
 msgid "Intersection between multipolygon ways"
 msgstr "マルチポリゴンウェイ間の交差"
 
 msgid "Multipolygon rings are equal"
-msgstr ""
+msgstr "マルチポリゴンの輪が等しい"
 
 msgid "Role for ''{0}'' should be ''{1}''"
 msgstr "''{0}''のロールは''{1}''であるべきです"
@@ -4054,10 +4054,10 @@ msgid "Multipolygon inner way is outside"
 msgstr "マルチポリゴンの内部ウェイが外側にあります"
 
 msgid "Multipolygon ring contains segments twice"
-msgstr ""
+msgstr "マルチポリゴンの輪が区間を二重に含んでいる"
 
 msgid "Multipolygon outer way shares segment(s) with other ring"
-msgstr ""
+msgstr "マルチポリゴンの外側のウェイが他の輪と区間を共有している"
 
 msgid "No useful role for multipolygon member"
 msgstr "マルチポリゴンメンバのための有用なロールがない"
@@ -4066,10 +4066,10 @@ msgid "Non-Way in multipolygon"
 msgstr "マルチポリゴン内にウェイ以外が含まれています"
 
 msgid "Multipolygon member(s) repeated with different role"
-msgstr ""
+msgstr "マルチポリゴンのメンバーが異なるロールで複数登録されている"
 
 msgid "Multipolygon member(s) repeated with same role"
-msgstr ""
+msgstr "マルチポリゴンのメンバーが同じロールで重複しています"
 
 msgid "Missing name:* translation"
 msgstr "翻訳名(name:*)の不備"
@@ -4164,7 +4164,7 @@ msgid "Public Transport Route"
 msgstr "公共交通ルート"
 
 msgid "Route relation contains a ''{0}'' role"
-msgstr ""
+msgstr "routeリレーションに ''{0}'' ロールが含まれています"
 
 msgid "Route relation contains a gap"
 msgstr "route リレーションが連続していない"
@@ -4375,10 +4375,10 @@ msgid "Unknown member type"
 msgstr "不明なメンバー種別"
 
 msgid "More than one \"from\" way found"
-msgstr "ひとつ以上の\"from\" ウェイが見つかりました"
+msgstr "2本以上の\"from\"ウェイが見つかりました"
 
 msgid "More than one \"to\" way found"
-msgstr "ひとつ以上の\"to\" ウェイが見つかりました"
+msgstr "2本以上の\"to\"ウェイが見つかりました"
 
 msgid "More than one \"via\" node found"
 msgstr "\"via\"ノードが複数あります"
@@ -4755,7 +4755,7 @@ msgid "options provided as Java system properties"
 msgstr "Javaシステムのプロパティとして提供されるオプション"
 
 msgid "Change the JOSM directory name"
-msgstr ""
+msgstr "JSOMのディレクトリ名を変更"
 
 msgid "/PATH/TO/JOSM/PREF    "
 msgstr "/PATH/TO/JOSM/PREF    "
@@ -4764,7 +4764,7 @@ msgid "Set the preferences directory"
 msgstr "設定ディレクトリを設定"
 
 msgid "Default: {0}"
-msgstr ""
+msgstr "既定: {0}"
 
 msgid "/PATH/TO/JOSM/USERDATA"
 msgstr "/PATH/TO/JOSM/USERDATA"
@@ -4784,7 +4784,7 @@ msgstr "/PATH/TO/JOSM/HOMEDIR "
 msgid ""
 "Set the preferences+data+cache directory (cache directory will be "
 "josm.home/cache)"
-msgstr ""
+msgstr "設定+データ+キャッシュディレクトリを設定 (キャッシュディレクトリは josm.home/cacheになります)"
 
 msgid ""
 "-Djosm.home has lower precedence, i.e. the specific setting overrides the "
@@ -6367,7 +6367,7 @@ msgid ""
 msgstr "他のレイヤーにおける本来の解像度で表示(クリックでレイヤーを設定)"
 
 msgid "this layer has no native resolution"
-msgstr ""
+msgstr "このレイヤーには規定の解像度がありません。"
 
 msgid "Information about layer"
 msgstr "レイヤーについての情報"
@@ -6511,7 +6511,7 @@ msgid "Sort"
 msgstr "並べ替え"
 
 msgid "Open the note in an external browser"
-msgstr ""
+msgstr "外部ブラウザでメモを開く"
 
 msgid "Object type:"
 msgstr "オブジェクト種別:"
@@ -6754,7 +6754,7 @@ msgid "Download the content of the selected changesets from the server"
 msgstr "選択した変更セットの内容をサーバーからダウンロード"
 
 msgid "Download changed objects"
-msgstr ""
+msgstr "変更されたオブジェクトをダウンロード"
 
 msgid ""
 "Download the current version of the changed objects in the selected "
@@ -6820,7 +6820,7 @@ msgid "Download objects"
 msgstr "オブジェクトをダウンロード"
 
 msgid "Download the current version of the selected objects"
-msgstr ""
+msgstr "選択されたオブジェクトの現在のバージョンをダウンロードする"
 
 msgid "Select in layer"
 msgstr "レイヤーから選択"
@@ -7191,10 +7191,10 @@ msgid "Copy {1} of {0}"
 msgstr "{0}のコピー({1})"
 
 msgid "Change visibility of the selected layer."
-msgstr ""
+msgstr "選択中のレイヤーの表示方法を変更します。"
 
 msgid "Show layer"
-msgstr ""
+msgstr "レイヤーを表示"
 
 msgid "Adjust opacity of the layer."
 msgstr "レイヤーの透明度を調整"
@@ -7209,16 +7209,16 @@ msgid "Gamma"
 msgstr "ガンマ"
 
 msgid "Adjust sharpness/blur value of the layer."
-msgstr ""
+msgstr "このレイヤーの鮮明度を調整してください。"
 
 msgid "Sharpness"
 msgstr "鮮明度"
 
 msgid "Adjust colorfulness of the layer."
-msgstr ""
+msgstr "レイヤーの彩度を調整します。"
 
 msgid "Colorfulness"
-msgstr ""
+msgstr "彩度"
 
 msgid "Merge this layer into another layer"
 msgstr "このレイヤーを他のレイヤーに結合"
@@ -7427,7 +7427,7 @@ msgid "Hide"
 msgstr "隠す"
 
 msgid "Refresh recent tags list after applying tag"
-msgstr ""
+msgstr "タグを適用した後で最新のタグを更新"
 
 msgid "No refresh"
 msgstr "更新なし"
@@ -7980,6 +7980,12 @@ msgstr ""
 "<html>JOSMが起動された時に毎回「OSMからダウンロード」ダイアログを開きます。<br>これはファイルメニューやツールバーから開くことができます。"
 "</html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9338,6 +9344,9 @@ msgstr "APIバージョン: {0}"
 msgid "Upload is discouraged"
 msgstr "アップロード抑制中"
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "GPXレイヤーの変換"
 
@@ -10842,10 +10851,10 @@ msgid "Draw oneway arrows."
 msgstr "一方通行の向きを矢印で表示"
 
 msgid "Draw segment order numbers"
-msgstr "区間の順序番号を表示する"
+msgstr "区間番号を表示する"
 
 msgid "Draw segment order numbers on selected way"
-msgstr ""
+msgstr "選択されたウェイの区間番号を表示する"
 
 msgid "Draw boundaries of downloaded data"
 msgstr "ダウンロードデータの境界を表示"
@@ -11145,7 +11154,7 @@ msgid "Overlay gain adjustment"
 msgstr ""
 
 msgid "Lower limit of visibility"
-msgstr ""
+msgstr "表示の下限"
 
 msgid "Adjust the gain of overlay blending."
 msgstr ""
@@ -11197,7 +11206,7 @@ msgid "Use native file choosers (nicer, but do not support file filters)"
 msgstr "ネイティブのファイル選択を使用(より良いが、ファイルフィルターがサポートされない)"
 
 msgid "Reverse zoom with mouse wheel"
-msgstr ""
+msgstr "マウスホイールでのズームを反転"
 
 msgid "Intermediate steps between native resolutions"
 msgstr ""
@@ -11406,7 +11415,7 @@ msgid "copy selected defaults"
 msgstr "選択したエントリをコピーします"
 
 msgid "Please select at least one row to copy."
-msgstr "コピーする列を1つ以上選んでください。"
+msgstr "コピーする行を1つ以上選んでください。"
 
 msgid "Menu Name"
 msgstr "メニューの名前"
@@ -14719,6 +14728,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "住宅地"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "やぶ"
@@ -14727,6 +14744,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr "森林"
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "通り名住居表示"
@@ -15172,6 +15193,18 @@ msgstr "VoGIS: Höhen und Gelände"
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -15184,9 +15217,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr numerical imagery (2013)"
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr "URBISnl numerical imagery (2013)"
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr "URBIS 2009 aerial imagery"
 
@@ -15199,6 +15238,9 @@ msgstr "URBIS 2014 aerial imagery"
 msgid "URBIS 2015 aerial imagery"
 msgstr "URBIS 2015 aerial imagery"
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr "SPW(allonie) PICC numerical imagery"
 
@@ -15992,10 +16034,10 @@ msgstr "Stadt Zürich Übersichtsplan (Strassen, Gebäude, Hausnummer)"
 msgid "Stadt Zürich Luftbild 2011"
 msgstr "Stadt Zürich Luftbild 2011"
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -16115,7 +16157,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16447,6 +16489,11 @@ msgstr ""
 ".atに最適化されています。"
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16483,8 +16530,8 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr "コマンドラインを実装しており、自分のコマンドを作成することができます。標準コマンド(arc, circle,他)はリンクを参照。"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
-msgstr "(警告: 試験中!)データの合成(マージ)用のツールです。"
+msgid "Tool for conflating data (matching and merging)."
+msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
 msgstr "場所を移動したりズームしたりすると、新しいデータをダウンロードします"
@@ -16613,6 +16660,11 @@ msgstr "空間の参考イメージをインポートするためのプラグイ
 msgid "Import vector graphics (SVG)"
 msgstr "ベクタグラフィクス(SVG)のインポート"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16791,6 +16843,11 @@ msgid "Plugin for reverting changesets"
 msgstr "変更セットを元に戻すプラグイン"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -17904,10 +17961,10 @@ msgid "Toll"
 msgstr "料金"
 
 msgid "Intermittent"
-msgstr ""
+msgstr "永続的ではない"
 
 msgid "Seasonal"
-msgstr ""
+msgstr "季節的"
 
 msgid "In the tidal range"
 msgstr "潮間帯"
@@ -25147,6 +25204,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr "通り名が略称になっている"
 
@@ -25277,18 +25337,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr "親ウェイのタグが重複しているノード"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
-msgstr "Wikipediaの言語がない、\"wikipedia\"=\"language:page title\"を使用のこと"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
+msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
-msgstr "wikipediaタグの言語名が不明"
+msgid "wikipedia tag has an unknown language prefix"
+msgstr ""
 
-msgid "deprecated format for wikipedia tag"
-msgstr "古い形式のwikipediaタグです"
+msgid "wikipedia tag format is deprecated"
+msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr "''wikipedia''=''言語名:ページ名''"
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr "縮尺が小さい場合にアイコンを隠す"
 
@@ -25897,10 +25996,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25948,9 +26047,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25982,9 +26078,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -26090,16 +26183,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
-msgstr ""
+msgid "No image selected"
+msgstr "画像が選択されていません"
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -26153,6 +26246,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -26221,6 +26317,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -26242,6 +26344,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -26268,6 +26376,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -26282,6 +26393,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26324,18 +26438,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr "NanoLog"
 
@@ -26913,6 +27015,9 @@ msgstr "建物:"
 msgid "Tags:"
 msgstr "タグ:"
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "名前:"
 
@@ -26946,6 +27051,11 @@ msgstr ""
 msgid "Created area"
 msgstr "作成されたエリア"
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr "クリックした場所の図形を検出できませんでした。"
 
@@ -27033,12 +27143,38 @@ msgstr "ノードをマージ"
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -27139,9 +27275,6 @@ msgstr ""
 msgid "on polygon"
 msgstr "ポリゴン上"
 
-msgid "Add address"
-msgstr "住所の追加"
-
 msgid "Helping tool for tag address"
 msgstr "住所のタグ付けの補助ツール"
 
@@ -27685,8 +27818,8 @@ msgid ""
 "More than one WMS layer present\n"
 "Select one of them first, then retry"
 msgstr ""
-"ひとつ以上のWMS レイヤーがあります\n"
-"最初にそのひとつを選んで、やり直してください"
+"2つ以上のWMS レイヤーがあります\n"
+"最初にその1つを選んで、やり直してください"
 
 msgid "Reset offset"
 msgstr "オフセットを初期化"
@@ -27756,13 +27889,6 @@ msgstr "選択した配色を一覧から削除する。"
 msgid "Color Schemes"
 msgstr "配色"
 
-msgid "Conflate object pair"
-msgstr "一対のオブジェクトを統合"
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] "主題レイヤーに{0}件のオブジェクトを追加しました"
-
 msgid "Conflation"
 msgstr "合成"
 
@@ -27793,13 +27919,10 @@ msgstr "設定"
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove {0} unmatched objects"
-msgstr "一致しないオブジェクトを{0}件削除"
-
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27811,8 +27934,11 @@ msgstr "選択中のオブジェクトを合成"
 msgid "Conflation: {0}"
 msgstr "合成: {0}"
 
-msgid "Cannot replace geometry."
-msgstr "座標を置き換えることができませんでした。"
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
+msgstr ""
 
 msgid "Zoom to selected primitive(s)"
 msgstr "選択されたプリミティブにズーム"
@@ -27823,23 +27949,129 @@ msgstr "選択されたプリミティブを選択"
 msgid "Select the primitives currently selected in the list"
 msgstr "一覧で選択されているプリミティブを選択"
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr "一対のオブジェクトを統合"
+
+msgid "Cannot replace geometry."
+msgstr "座標を置き換えることができませんでした。"
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] "主題レイヤーに{0}件のオブジェクトを追加しました"
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr "一致しないオブジェクトを{0}件削除"
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Filter by window. Buffer: "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "Union up to "
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid " adjacent Reference features"
 msgstr ""
 
-msgid "Centroid distance"
-msgstr "中点距離"
+msgid "Weight"
+msgstr "重み付け"
 
-msgid "Hausdorff distance"
-msgstr "ハウスドルフ距離"
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
+msgstr ""
+
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
+msgstr ""
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
+
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
+msgstr ""
 
 msgid "Configure conflation settings"
 msgstr ""
@@ -27847,13 +28079,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "位置を置き換え"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27886,10 +28136,25 @@ msgstr "選択されていません"
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
+msgstr ""
+
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28946,6 +29211,33 @@ msgstr "ベクターグラフィックスをインポート"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "SVGファイル[ImportVecプラグイン](*.svg)"
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -29201,9 +29493,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr "位置を置き換え"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -30458,9 +30747,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr "先に画像を選択して下さい。"
 
-msgid "No image selected"
-msgstr "画像が選択されていません"
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -31447,6 +31733,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr "警告: 変更セットコンテンツ中({1},{2})の位置にサポートされない終了エレメント ''{0}'' があります。スキップします。"
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr "Road Sign プラグイン"
 
@@ -31576,9 +31868,6 @@ msgstr "ルーティング設定情報の構成"
 msgid "Speed (Km/h)"
 msgstr "速度(Km/h)"
 
-msgid "Weight"
-msgstr "重み付け"
-
 msgid "Enter weight values"
 msgstr "重みの値の入力"
 
diff --git a/i18n/po/ka.po b/i18n/po/ka.po
index bf42a92..38149e7 100644
--- a/i18n/po/ka.po
+++ b/i18n/po/ka.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2011-12-16 00:14+0000\n"
 "Last-Translator: datogogishvili <Unknown>\n"
 "Language-Team: Georgian <ka at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:49+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:47+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: ka\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1393,7 +1393,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7923,6 +7923,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9237,6 +9243,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14452,6 +14461,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14460,6 +14477,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14905,6 +14926,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14917,9 +14950,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14932,6 +14971,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15723,10 +15765,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15846,7 +15888,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16173,6 +16215,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16205,7 +16252,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16325,6 +16372,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16493,6 +16545,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24835,6 +24892,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24965,18 +25025,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25575,10 +25674,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25626,9 +25725,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25660,9 +25756,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25768,16 +25861,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25831,6 +25924,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25899,6 +25995,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25920,6 +26022,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25946,6 +26054,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25960,6 +26071,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26002,18 +26116,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26510,6 +26612,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26543,6 +26648,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26630,12 +26740,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26736,9 +26872,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27315,14 +27448,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27353,13 +27478,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27371,7 +27493,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27383,22 +27508,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27407,13 +27639,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27446,10 +27696,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28477,6 +28742,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28728,9 +29020,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29972,9 +30261,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30955,6 +31241,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31084,9 +31376,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/km.po b/i18n/po/km.po
index a7a6ddd..7b501e8 100644
--- a/i18n/po/km.po
+++ b/i18n/po/km.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2015-01-27 10:25+0000\n"
 "Last-Translator: Sophea Sok <sksophea at gmail.com>\n"
 "Language-Team: Khmer <km at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:58+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:56+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1470,8 +1470,8 @@ msgstr "គូរ​បន្ទាត់​រវាង​ចំណុច​ជ
 msgid "Toggles the global setting ''{0}''."
 msgstr "បិទ/បើក​ការ​កំណត់​សាកល ''{0}'' ។"
 
-msgid "Encourage/discourage upload"
-msgstr "អនុញ្ញាត/មិន​អនុញ្ញាត​ឲ្យ​ផ្ទុក​ឡើង"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "ផ្លូវ UnGlue"
@@ -8424,6 +8424,12 @@ msgstr ""
 "នៅ​រាល់​ពេល​ចាប់ផ្ដើម JOSM ។<br>អ្នក​អាច​បើក​វា​ដោយ​ដៃ​ចេញពី​ម៉ឺនុយ​ឯកសារ "
 "ឬ​របារ​ឧបករណ៍​ក៏​បាន។</html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9897,6 +9903,9 @@ msgstr "កំណែ API ៖ {0}"
 msgid "Upload is discouraged"
 msgstr "មិន​គួរ​ផ្ទុក​ឡើង"
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "បម្លែង​ទៅ​ស្រទាប់ GPX"
 
@@ -15775,6 +15784,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "ដី​លំនៅឋាន"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "ព្រៃ​គុម្ពោត"
@@ -15783,6 +15800,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "ផ្លូវ​ពាក់ព័ន្ធ"
@@ -16228,6 +16249,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -16240,9 +16273,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -16255,6 +16294,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -17046,10 +17088,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -17169,7 +17211,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -17504,6 +17546,11 @@ msgstr ""
 "គុណភាព​ខ្ពស់​សម្រាប់ basemap.at."
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -17550,9 +17597,8 @@ msgstr ""
 "អនុវត្ត​បន្ទាត់​ពាក្យ​បញ្ជា រួច​បើក​វា​ដើម្បី​បង្កើត​ពាក្យ​បញ្ជា​របស់​អ្នក។ "
 "មើល​តំណ​សម្រាប់​ពាក្យ​បញ្ជា​ស្តង់ដារ (អ័ក្ស រង្វង់។ល។)"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
-"(ព្រមាន៖ សម្រាប់​ពិសោធន៍!) ឧបករណ៍​សម្រាប់​ភ្ជាប់ (បញ្ចូល) ទិន្នន័យ​ចូលគ្នា។"
 
 msgid "Downloads new data when you pan/zoom"
 msgstr ""
@@ -17693,6 +17739,11 @@ msgstr "កម្មវិធី​ជំនួយ​សម្រាប់​ន
 msgid "Import vector graphics (SVG)"
 msgstr "នាំចូល​ក្រាហ្វិក​វ៉ិចទ័រ (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -17900,6 +17951,11 @@ msgid "Plugin for reverting changesets"
 msgstr "កម្មវិធី​ជំនួយ​សម្រាប់​ត្រឡប់​សំណុំ​ផ្លាស់ប្ដូរ"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -26246,6 +26302,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -26376,18 +26435,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -26986,10 +27084,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -27037,9 +27135,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -27071,9 +27166,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -27179,16 +27271,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -27242,6 +27334,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -27310,6 +27405,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -27331,6 +27432,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -27357,6 +27464,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -27371,6 +27481,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -27413,18 +27526,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -27921,6 +28022,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -27954,6 +28058,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -28041,12 +28150,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -28147,9 +28282,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -28726,14 +28858,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -28764,13 +28888,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -28782,7 +28903,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -28794,22 +28918,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
 msgstr ""
 
-msgid "Match finder method"
+msgid "Symmetric Difference (Centroids Aligned)"
 msgstr ""
 
-msgid "Threshold distance"
+msgid "Compactness"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid "Angle Histogram. Bins: "
 msgstr ""
 
-msgid "Centroid distance"
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
+msgstr ""
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
+
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -28818,13 +29049,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -28857,10 +29106,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -29888,6 +30152,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -30139,9 +30430,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -31383,9 +31671,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -32366,6 +32651,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -32495,9 +32786,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/ko.po b/i18n/po/ko.po
index 6bdc046..a1b5ee2 100644
--- a/i18n/po/ko.po
+++ b/i18n/po/ko.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
-"PO-Revision-Date: 2017-02-28 04:32+0000\n"
-"Last-Translator: Glados <Unknown>\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
+"PO-Revision-Date: 2017-03-22 16:44+0000\n"
+"Last-Translator: Myeongjin <aranet100 at gmail.com>\n"
 "Language-Team: Korean <ko at li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2017-02-28 04:35+0000\n"
-"X-Generator: Launchpad (build 18329)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:57+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: ko\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -50,7 +50,7 @@ msgid "Invalid value {0} for parameter ''has_arg''"
 msgstr "''has_arg'' 변수에 대한 {0} 값이 잘못되었습니다"
 
 msgid "Background Terms of Use"
-msgstr "배경 이용 약관"
+msgstr "배경 사진 이용 약관"
 
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "현재 플랫폼(\"{0}\")에서는 링크 열기를 지원하지 않습니다"
@@ -59,7 +59,7 @@ msgid "Executing platform startup hook"
 msgstr "훅을 시작하면 플랫폼 실행"
 
 msgid "Building main menu"
-msgstr "메인 메뉴 구축"
+msgstr "주요 메뉴 구축 중"
 
 msgid "Help"
 msgstr "도움말"
@@ -74,7 +74,7 @@ msgid "Initializing internal traffic data"
 msgstr ""
 
 msgid "Initializing validator"
-msgstr "유효성 검사기 초기화 중"
+msgstr "유효성 검사 초기화 중"
 
 msgid "Initializing presets"
 msgstr "프리셋 초기화 중"
@@ -83,13 +83,13 @@ msgid "Initializing map styles"
 msgstr "지도 스타일 초기화 중"
 
 msgid "Loading imagery preferences"
-msgstr "배경 환경 설정을 불러오는 중"
+msgstr "사진 환경 설정을 불러오는 중"
 
 msgid "Updating user interface"
 msgstr "사용자 인터페이스 업데이트 중"
 
 msgid "Failed to save default preferences."
-msgstr ""
+msgstr "기본 환경 설정을 저장하는데 실패하였습니다."
 
 msgid "Ignoring malformed URL: \"{0}\""
 msgstr "잘못된 URL 무시: \"{0}\""
@@ -101,7 +101,7 @@ msgid "Ignoring malformed file URL: \"{0}\""
 msgstr "잘못된 파일 URL 무시: \"{0}\""
 
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "\"downloadgps\" 변수를 파일 이름이나 파일 URL에서 받아올 수 없습니다"
+msgstr "변수 \"downloadgps\"를 파일 이름이나 파일 URL에서 받아올 수 없습니다"
 
 msgid "About"
 msgstr "정보"
@@ -110,7 +110,7 @@ msgid "Display the about screen."
 msgstr "화면에 대해 표시합니다."
 
 msgid "Java OpenStreetMap Editor"
-msgstr "자바 OpenStreetMap 편집기"
+msgstr "Java OpenStreetMap 편집기"
 
 msgid "Version {0}"
 msgstr "버전 {0}"
@@ -119,7 +119,7 @@ msgid "Last change at {0}"
 msgstr "{0}에 마지막으로 바뀜"
 
 msgid "Java Version {0}"
-msgstr "자바 버전 {0}"
+msgstr "Java 버전 {0}"
 
 msgid "Homepage"
 msgstr "홈페이지"
@@ -152,10 +152,10 @@ msgid "Report bug"
 msgstr "버그 보고"
 
 msgid "Failed to locate resource ''{0}''."
-msgstr ""
+msgstr "''{0}'' 자료를 위치하는 데 실패했습니다."
 
 msgid "Failed to load resource ''{0}'', error is {1}."
-msgstr ""
+msgstr "''{0}'' 자료를 불러오는 데 실패했으며, 오류는 {1}입니다."
 
 msgid ""
 "You are about to launch {0} browser window.<br>This may both clutter your "
@@ -164,7 +164,7 @@ msgid_plural ""
 "You are about to launch {0} browser windows.<br>This may both clutter your "
 "screen with browser windows<br>and take some time to finish."
 msgstr[0] ""
-"{0}개의 브라우저 윈도우를 열려고 합니다. <br> 브라우저 창을 방해할 것이고 <br>종료하는 데 시간이 걸릴 것입니다."
+"브라우저 창 {0}개를 실행하려고 합니다.<br>브라우저 창으로 화면이 어지로워질 것이고<br>마치는 데 시간이 걸릴 것입니다."
 
 msgid "Continue"
 msgstr "계속"
@@ -180,7 +180,7 @@ msgid "Click to abort launching external browsers"
 msgstr "바깥 브라우저 실행을 중단하려면 클릭하세요"
 
 msgid "Please select at least one already uploaded node, way, or relation."
-msgstr "이미 올려진 노드, 길이나 관계를 적어도 하나 이상 선택하세요."
+msgstr "이미 업로드된 점, 선이나 관계를 하나 이상 선택하세요."
 
 msgid "Please select the target layer."
 msgstr "대상 레이어를 선택하세요."
@@ -213,16 +213,16 @@ msgid "Add layers"
 msgstr "레이어 추가"
 
 msgid "Add imagery layer {0}"
-msgstr "배경 레이어 {0} 추가"
+msgstr "사진 레이어 {0} 추가"
 
 msgid "Invalid service URL."
-msgstr "올바르지 않은 서비스 URL"
+msgstr "잘못된 서비스 URL입니다."
 
 msgid "WMS Error"
 msgstr "WMS 오류"
 
 msgid "Could not retrieve WMS layer list."
-msgstr "WMS 레이어 목록을 얻을 수 없습니다."
+msgstr "WMS 레이어 목록을 얻을 수 없었습니다."
 
 msgid "Could not parse WMS layer list."
 msgstr "WMS 레이어 목록을 구문 분석할 수 없었습니다."
@@ -255,14 +255,14 @@ msgid "Not enough nodes in selected ways."
 msgstr "선택된 선에 점이 부족합니다."
 
 msgid "Please select at least four nodes."
-msgstr "적어도 점 네 개를 선택하세요."
+msgstr "점 네 개 이상을 선택해주세요."
 
 msgid "Cannot determine center of selected nodes."
 msgstr "선택한 점의 중앙점을 지정할 수 없습니다."
 
 msgid ""
 "One or more nodes involved in this action is outside of the downloaded area."
-msgstr "이 동작에 연관된 한 개, 혹은 그 이상의 점이 다운로드된 구역 밖에 존재합니다."
+msgstr "이 동작과 연관된 한 개 이상의 점이 다운로드된 지역의 바깥에 있습니다."
 
 msgid "Align Nodes in Line"
 msgstr "점을 직선으로 정렬"
@@ -271,16 +271,16 @@ msgid "Move the selected nodes in to a line."
 msgstr "선택한 점을 직선으로 정렬합니다."
 
 msgid "Please select at least three nodes."
-msgstr "적어도 점 세 개를 선택하세요."
+msgstr "점 세 개 이상을 선택해주세요."
 
 msgid "Can not align a polygon. Abort."
 msgstr "다각형을 정렬할 수 없습니다. 중단합니다."
 
 msgid "Intersection of three or more ways can not be solved. Abort."
-msgstr "3차로, 혹은 그 이상의 길에 대한 교차로를 연결할 수 없습니다. 취소합니다."
+msgstr "3차로 이상의 길의 교차로를 해결할 수 없습니다. 중단합니다."
 
 msgid "Two parallels ways found. Abort."
-msgstr "두 개의 동일한 선이 발견되었습니다. 취소합니다."
+msgstr "나란한 선 두 개를 찾았습니다. 중단합니다."
 
 msgid "data"
 msgstr "데이터"
@@ -322,25 +322,25 @@ msgid "View: {0}"
 msgstr "보기: {0}"
 
 msgid "No conflicts to zoom to"
-msgstr "줌할 충돌이 없습니다"
+msgstr "이동하는 데 충돌이 없습니다"
 
 msgid "Changeset Manager"
 msgstr "바뀜집합 관리자"
 
 msgid "Toggle visibility of Changeset Manager window"
-msgstr "바뀜집합 관리자 창의 가독성 바꾸기"
+msgstr "바뀜집합 관리자 창의 가독성 전환"
 
 msgid "Close open changesets"
-msgstr "열린 바뀜집합 닫기"
+msgstr "열린 바뀜집합 마감"
 
 msgid "Closes open changesets"
-msgstr "열린 바뀜집합 닫기"
+msgstr "열린 바뀜집합 마감"
 
 msgid "File: {0}"
 msgstr "파일: {0}"
 
 msgid "There are no open changesets"
-msgstr "열린 버뀜집합이 없습니다."
+msgstr "열린 바뀜집합이 없습니다"
 
 msgid "No open changesets"
 msgstr "열린 바뀜집합 없음"
@@ -358,7 +358,7 @@ msgid "Change directions?"
 msgstr "방향을 바꾸겠습니까?"
 
 msgid "Reverse and Combine"
-msgstr "방향으로 바꾸고 결합"
+msgstr "뒤집고 결합"
 
 msgid ""
 "The ways can not be combined in their current directions.  Do you want to "
@@ -368,14 +368,14 @@ msgstr "선은 현재 방향으로 결합될 수 없습니다. 선의 방향을
 msgid ""
 "Could not combine ways<br>(They could not be merged into a single string of "
 "nodes)"
-msgstr "선을 묶을 수 없었습니다<br>(한 개의 점으로 병합될 수 없었습니다)"
+msgstr "선을 묶을 수 없었습니다<br>(한 개의 점 안으로 병합될 수 없었습니다)"
 
 msgid "Reverse Ways"
 msgstr "선 방향 뒤집기"
 
 msgid "Combine {0} way"
 msgid_plural "Combine {0} ways"
-msgstr[0] "{0}개의 선 결합"
+msgstr[0] "선 {0}개 결합"
 
 msgid "Please select at least two ways to combine."
 msgstr "최소한 2개 이상의 결합할 선을 선택하세요."
@@ -384,7 +384,7 @@ msgid "Copy"
 msgstr "복사"
 
 msgid "Copy selected objects to paste buffer."
-msgstr "붙여넣기 버퍼에 선택한 객체를 복사"
+msgstr "붙여넣기 버퍼에 선택한 개체를 복사"
 
 msgid "Please select something to copy."
 msgstr "복사할 것을 선택하세요."
@@ -393,7 +393,7 @@ msgid "Copy Coordinates"
 msgstr "좌표 복사"
 
 msgid "Copy coordinates of selected nodes to clipboard."
-msgstr "선택된 점의 좌표를 클립보드로 복사합니다"
+msgstr "선택된 점의 좌표를 클립보드로 복사합니다."
 
 msgid "Create Circle"
 msgstr "원 그리기"
@@ -407,7 +407,7 @@ msgid ""
 msgstr "2개 또는 3개의 점을 선택하거나, 2개 또는 3개의 점을 가진 선을 선택하세요."
 
 msgid "Those nodes are not in a circle. Aborting."
-msgstr "이 점은 원이 아닙니다. 취소합니다."
+msgstr "이 점은 원에 있지 않습니다. 중단합니다."
 
 msgid "Update multipolygon"
 msgstr "다각형 업데이트"
@@ -425,7 +425,7 @@ msgid "Delete"
 msgstr "삭제"
 
 msgid "Delete selected objects."
-msgstr "선택된 객체를 삭제합니다."
+msgstr "선택된 개체를 삭제합니다."
 
 msgid "Delete Layer"
 msgstr "레이어 삭제"
@@ -434,7 +434,7 @@ msgid "Delete the active layer. Does not delete the associated file."
 msgstr "활성화된 레이어를 삭제합니다. 연결된 파일은 삭제되지 않습니다."
 
 msgid "Toggle dialogs panel"
-msgstr "토글 대화 패널"
+msgstr "대화 상자 패널 전환"
 
 msgid "Toggle dialogs panel, maximize mapview"
 msgstr ""
@@ -446,13 +446,16 @@ msgid "Distribute the selected nodes to equal distances along a line."
 msgstr "선택된 선을 직선 상의 동일 거리에 분산 배치합니다."
 
 msgid "Ignoring {0} nodes with null coordinates"
-msgstr "좌표가 없는 {0}개의 점을 무시함"
+msgstr "좌표가 없는 점 {0}개를 무시하기"
 
 msgid ""
 "Please select :\n"
 "* One no self-crossing way with at most two of its nodes;\n"
 "* Three nodes."
 msgstr ""
+"선택하세요 :\n"
+"* 최대 점 2개가 있는 자신의 교차하는 길이 없거나;\n"
+"* 점 세개입니다."
 
 msgid "Download from OSM..."
 msgstr "OSM에서 다운로드..."
@@ -463,38 +466,37 @@ msgstr "OSM 서버로 부터 지도 데이터를 다운로드합니다."
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
 "wish<br>to continue?</html>"
-msgstr ""
-"<html>이 행동은 {0} 회의 독립적인 <br>다운로드 요청을 필요로 합니다. 정말로<br>계속하시겠습니까?</html>"
+msgstr "<html>이 동작은 독립적인 다운로드 요청<br>{0}회가 필요합니다.<br>계속하시겠습니까?</html>"
 
 msgid "Download data"
 msgstr "데이터 다운로드"
 
 msgid "Download notes in current view"
-msgstr "현재 보기에서 참고 다운로드"
+msgstr "현재 화면에서 참고 다운로드"
 
 msgid "Download in current view"
-msgstr ""
+msgstr "현재 화면에서 다운로드"
 
 msgid "Download map data from the OSM server in current view"
-msgstr ""
+msgstr "OSM 서버로부터 현재 화면에 지도 데이터를 다운로드합니다."
 
 msgid "Download object..."
-msgstr "오브젝트 다운로드..."
+msgstr "개체 다운로드..."
 
 msgid "Download OSM object by ID."
-msgstr "ID에 의한 OSM 오브젝트 다운로드"
+msgstr "ID에 의한 OSM 개체 다운로드"
 
 msgid "Download parent ways/relations..."
-msgstr "상위 길/관계 다운로드..."
+msgstr "상위 선/관계 다운로드..."
 
 msgid "Download objects referring to one of the selected objects"
-msgstr "선택된 개체의 하나를 참조하는 개체 다운로드"
+msgstr "선택된 객체의 하나를 참조하는 개체를 다운로드합니다."
 
 msgid "Duplicate"
 msgstr "복제"
 
 msgid "Duplicate selection."
-msgstr ""
+msgstr "선택한 것을 복제합니다."
 
 msgid "Exit"
 msgstr "종료"
@@ -521,10 +523,10 @@ msgid "Fullscreen view"
 msgstr "전체화면 보기"
 
 msgid "Toggle fullscreen view"
-msgstr "전체 화면 보기 전환"
+msgstr "전체 화면 보기 토글"
 
 msgid "Export to GPX..."
-msgstr "GPX로 내보내기"
+msgstr "GPX로 내보내기..."
 
 msgid "Export the data to GPX file."
 msgstr "GPX 파일로 데이터를 내보내기"
@@ -536,30 +538,30 @@ msgid "Export GPX file"
 msgstr "GPX 파일로 내보내기"
 
 msgid "History"
-msgstr "이력"
+msgstr "역사"
 
 msgid "Display history information about OSM ways, nodes, or relations."
-msgstr "OSM 도로, 노드, 또는 릴레이션에 대한 이력 정보 표시"
+msgstr "OSM 선, 점, 또는 관계에 대한 역사 정보 표시"
 
 msgid "Show history"
 msgstr "역사 보기"
 
 msgid "History (web)"
-msgstr "이력(웹)"
+msgstr "역사 (웹)"
 
 msgid ""
 "Display history information about OSM ways, nodes, or relations in web "
 "browser."
-msgstr "브라우저에서 OSM 도로, 노드, 또는 릴레이션에 대한 이력 정보 표시"
+msgstr "웹브라우저에서 OSM 선, 점, 또는 관계에 대한 역사 정보 표시"
 
 msgid "New offset"
 msgstr "새 오프셋"
 
 msgid "Adjust the position of this imagery layer"
-msgstr "이 이미지 레이어의 위치 조정"
+msgstr "이 사진 레이어의 위치 조절"
 
 msgid "Adjust imagery offset"
-msgstr "이미지 오프셋 조정"
+msgstr "사진 오프셋 조절"
 
 msgid ""
 "Use arrow keys or drag the imagery layer with mouse to adjust the imagery "
@@ -575,7 +577,7 @@ msgid "Bookmark name: "
 msgstr "북마크 이름: "
 
 msgid "Overwrite"
-msgstr "덮어쓰기(&O)"
+msgstr "덮어쓰기"
 
 msgid "Offset bookmark already exists. Overwrite?"
 msgstr "오프셋 북마크가 이미 존재합니다. 덮어쓸까요?"
@@ -585,7 +587,7 @@ msgstr "고급 정보"
 
 msgid ""
 "Display advanced object information about OSM nodes, ways, or relations."
-msgstr "OSM 노드, 도로, 또는 릴레이션에대한 고급 오브젝트 정보를 표시."
+msgstr "OSM 점, 선, 또는 관계에 대한 고급 개체 정보를 표시합니다."
 
 msgid "Advanced info (web)"
 msgstr "고급 정보 (웹)"
@@ -593,40 +595,40 @@ msgstr "고급 정보 (웹)"
 msgid ""
 "Display object information about OSM nodes, ways, or relations in web "
 "browser."
-msgstr "웹브라우저에서 OSM 노드, 도로, 또는 릴레이션에대한 오브젝트 정보를 표시."
+msgstr "웹브라우저에서 OSM 점, 선, 또는 관계에 대한 개체 정보를 표시합니다."
 
 msgid "Join overlapping Areas"
-msgstr "겹치는 영역 조인"
+msgstr "겹치는 영역 연결"
 
 msgid "Joins areas that overlap each other"
-msgstr "서로 겹치는 영역 조인"
+msgstr "서로 겹치는 영역 결합"
 
 msgid "Please select at least one closed way that should be joined."
-msgstr "조인을 하기위해서 최소 하나의 연결된(닫힌) 경로를 선택해 주세요."
+msgstr "결합을 하기 위해서는 최소 하나의 연결된 선을 선택해야 합니다."
 
 msgid ""
 "One of the selected ways is not closed and therefore cannot be joined."
-msgstr "선택된 경로의 일부가 연결되지 않았으므로 조인을 할 수 없습니다."
+msgstr "선택된 선의 일부가 연결되지 않았으므로 결합을 할 수 없습니다."
 
 msgid "Join area confirmation"
-msgstr "조인 영역 확인"
+msgstr "결합 영역 확인"
 
 msgid "The selected way has nodes outside of the downloaded data region."
 msgid_plural ""
 "The selected ways have nodes outside of the downloaded data region."
-msgstr[0] "선택된 경로가 다운로드된 데이터 지역을 벗어난 노드를 포함합니다."
+msgstr[0] "선택된 선이 다운로드된 데이터 지역을 벗어난 점을 포함합니다."
 
 msgid "This can lead to nodes being deleted accidentally."
-msgstr "이것은 실수로 삭제된 노드와 연결될 수 있습니다."
+msgstr "이것은 실수로 삭제된 점과 연결될 수 있습니다."
 
 msgid "Are you really sure to continue?"
 msgstr "정말로 계속 진행하시겠습니까?"
 
 msgid "Please abort if you are not sure"
-msgstr "확실하지 않다면 중지를 눌러주세요"
+msgstr "확실하지 않다면 중단을 눌러주세요."
 
 msgid "The selected area is incomplete. Continue?"
-msgstr "선택된 영역이 완전하지 않습니다. 계속하시겠습니까?"
+msgstr "선택된 영역이 다운로드되지 않았습니다. 계속하시겠습니까?"
 
 msgid "No intersection found. Nothing was changed."
 msgstr "교차점을 찾을 수 없습니다. 아무것도 변경되지 않습니다."
@@ -638,16 +640,16 @@ msgid "Reverting changes"
 msgstr "변경사항 되돌리기"
 
 msgid "Removed duplicate nodes"
-msgstr "제거된 중복 노드"
+msgstr "제거된 중복인 점"
 
 msgid "Added node on all intersections"
-msgstr "모든 교차점에 노드 추가"
+msgstr "모든 교차점에 점 추가"
 
 msgid "Assemble new polygons"
-msgstr "새 폴리곤 생성"
+msgstr "새 다각형 생성"
 
 msgid "Delete relations"
-msgstr "릴레이션 삭제"
+msgstr "관계 삭제"
 
 msgid "Delete Ways that are not part of an inner multipolygon"
 msgstr ""
@@ -661,7 +663,7 @@ msgid ""
 msgstr ""
 
 msgid "Fix tag conflicts"
-msgstr "태그 충돌 해결"
+msgstr "태그 충돌 수정"
 
 msgid "Split ways into fragments"
 msgstr ""
@@ -686,22 +688,22 @@ msgid "Removed Element from Relations"
 msgstr "관계에서 제거된 요소"
 
 msgid "Remove tags from inner ways"
-msgstr "안쪽 길에서의 태그 제거"
+msgstr "안쪽 선에서의 태그 제거"
 
 msgid "Join Areas Function"
 msgstr ""
 
 msgid "Join Node to Way"
-msgstr "Node를 Way에 붙이기"
+msgstr "점을 선에 결합"
 
 msgid "Include a node into the nearest way segments"
-msgstr ""
+msgstr "가장 가까운 선 쪽이 점에 결합합니다."
 
 msgid "Move Node onto Way"
-msgstr "노드를 길로 이동"
+msgstr "점을 선으로 이동"
 
 msgid "Move the node onto the nearest way segments and include it"
-msgstr ""
+msgstr "점을 가장 가까운 선 쪽으로 이동합니다."
 
 msgid "No Shortcut"
 msgstr "단축키 없음"
@@ -710,10 +712,10 @@ msgid "Jump To Position"
 msgstr "위치로 이동"
 
 msgid "Opens a dialog that allows to jump to a specific location"
-msgstr ""
+msgstr "특정 위치로 이동할 수 있는 대화 상자를 엽니다."
 
 msgid "Jump to Position"
-msgstr "위치로 가기"
+msgstr "위치로 이동"
 
 msgid "Enter Lat/Lon to jump to position."
 msgstr "위도/경도를 입력하여 위치로 이동합니다."
@@ -728,7 +730,7 @@ msgid "Longitude"
 msgstr "경도"
 
 msgid "Zoom (in metres)"
-msgstr "줌(미터)"
+msgstr "줌 (미터)"
 
 msgid "URL"
 msgstr "URL"
@@ -740,13 +742,13 @@ msgid "Could not parse Latitude, Longitude or Zoom. Please check."
 msgstr "위도, 경도 또는 확대를 구문 분석할 수 없습니다. 확인해주세요."
 
 msgid "Unable to parse Lon/Lat"
-msgstr "위도/경도를 파싱할 수 없었습니다."
+msgstr "위도/경도를 구문 분석할 수 없습니다"
 
 msgid "Lasso Mode"
-msgstr ""
+msgstr "올가미 모드"
 
 msgid "Lasso selection mode: select objects within a hand-drawn region"
-msgstr ""
+msgstr "올가미 선택 모드:  커서로 그린 영역 내에 개체를 선택합니다."
 
 msgid "Rectified Image..."
 msgstr ""
@@ -755,10 +757,10 @@ msgid "Download Rectified Images From Various Services"
 msgstr ""
 
 msgid "Imagery: {0}"
-msgstr ""
+msgstr "사진: {0}"
 
 msgid "Custom WMS Link"
-msgstr "사용자 지정  WMS 링크"
+msgstr "사용자 정의 WMS 링크"
 
 msgid "Supported Rectifier Services:"
 msgstr ""
@@ -775,16 +777,16 @@ msgstr ""
 msgid ""
 "Couldn''t match the entered link or id to the selected service. Please try "
 "again."
-msgstr ""
+msgstr "입력된 링크 또는 ID를 선택된 서비스에 일치시킬 수 없었습니다. 다시 시도해주세요."
 
 msgid "No valid WMS URL or id"
-msgstr "유효한 WMS URL 또는 id가 아닙니다"
+msgstr "유효한 WMS URL 또는 ID가 아닙니다"
 
 msgid "Merge layer"
-msgstr "layer 합치기"
+msgstr "레이어 병합"
 
 msgid "Merge the current layer into another layer"
-msgstr "다른 layer에 현재 layer를 합치기"
+msgstr "다른 레이어에 현재 레이어를 병합합니다."
 
 msgid "{0} completed in {1}"
 msgstr "{0}은 {1}에서 완료되었습니다"
@@ -803,38 +805,38 @@ msgid ""
 msgstr ""
 
 msgid "Ignore this hint and merge anyway"
-msgstr "이 힌트를 무시하고 병합"
+msgstr "이 힌트를 무시하고 어쨌든 병합"
 
 msgid "Merge Nodes"
-msgstr "Node 합병"
+msgstr "점 병합"
 
 msgid "Merge nodes into the oldest one."
-msgstr "예전 것에 Node를 합병"
+msgstr "오래된 것에 점을 병합"
 
 msgid ""
 "Please select at least two nodes to merge or one node that is close to "
 "another node."
-msgstr "병합할 두 개 이상의 노드를 선택하거나 다른 노드와 가까운 노드를 선택해 주십시오."
+msgstr "병합할 두 개 이상의 점을 선택하거나 다른 점과 가까운 점을 선택해주세요."
 
 msgid "Abort Merging"
 msgstr "병합 중단"
 
 msgid "Click to abort merging nodes"
-msgstr "노드 병합을 중단하려면 클릭"
+msgstr "점 병합을 중단하려면 클릭하세요"
 
 msgid ""
 "Cannot merge nodes: Would have to delete way {0} which is still used by {1}"
-msgstr "노드 병합 불가: {1}이 사용하는 길 {0}을 지워야 합니다."
+msgstr "점을 병합할 수 없음: {1}에 여전히 사용되는 선 {0}을 삭제해야 합니다"
 
 msgid "Merge {0} node"
 msgid_plural "Merge {0} nodes"
-msgstr[0] "{0} 노드 병합"
+msgstr[0] "점 {0}개 병합"
 
 msgid "Merge selection"
-msgstr "선택한 것을 합치기"
+msgstr "선택한 것을 병합"
 
 msgid "Merge the currently selected objects into another layer"
-msgstr "현재 선택된 오브젝트를 다른 레이어에 병합"
+msgstr "현재 선택된 개체를 다른 레이어 안으로 병합"
 
 msgid "Merging too many objects with different upload policies"
 msgstr ""
@@ -847,13 +849,13 @@ msgid ""
 msgstr ""
 
 msgid "Mirror"
-msgstr "좌우 뒤집기"
+msgstr "좌우 반전"
 
 msgid "Mirror selected nodes and ways."
-msgstr ""
+msgstr "선택된 점과 선을 좌우 반전합니다."
 
 msgid "Please select at least one node or way."
-msgstr "최소한 한 개 이상의 node 또는 way를 선택하세요"
+msgstr "최소한 한 개 이상의 점 또는 선을 선택하세요."
 
 msgid "up"
 msgstr "위"
@@ -868,22 +870,22 @@ msgid "right"
 msgstr "오른쪽"
 
 msgid "Move objects {0}"
-msgstr "오브젝트 {0}을 이동"
+msgstr "개체 {0} 이동"
 
 msgid "Move {0}"
 msgstr "{0} 이동"
 
 msgid "Moves Objects {0}"
-msgstr "오브젝트 {0} 이동"
+msgstr "개체 {0} 이동"
 
 msgid "Cannot move objects outside of the world."
-msgstr "지도 밖으로 대상을 이동 시킬수 없습니다."
+msgstr "지도 밖으로 개체를 이동 시킬 수 없습니다."
 
 msgid "Move Node..."
-msgstr "노드 이동..."
+msgstr "점 이동..."
 
 msgid "Edit latitude and longitude of a node."
-msgstr "위도와 경도 편집"
+msgstr "점의 위도와 경도를 편집합니다."
 
 msgid "New Layer"
 msgstr "새 레이어"
@@ -898,14 +900,14 @@ msgid "Open..."
 msgstr "열기..."
 
 msgid "Open a file."
-msgstr "파일열기"
+msgstr "파일을 엽니다."
 
 msgid "Opening files"
 msgstr "파일 열기"
 
 msgid "Cannot open {0} file with the file importer ''{1}''."
 msgid_plural "Cannot open {0} files with the file importer ''{1}''."
-msgstr[0] "파일 들여오기 \"{1}\"에서 파일 {0}개를 열 수 없습니다."
+msgstr[0] "파일 가져오기 ''{1}''으로 파일 {0}개를 열 수 없습니다."
 
 msgid ""
 "Cannot open {0} file because file does not exist or no suitable file "
@@ -913,7 +915,7 @@ msgid ""
 msgid_plural ""
 "Cannot open {0} files because files do not exist or no suitable file "
 "importer is available."
-msgstr[0] "파일이 존재하지 않거나 적합한 파일 가져오기 도구를 사용할 수 없으므로 파일 {0}개를 열 수 없습니다."
+msgstr[0] "파일이 존재하지 않거나 가져오기 도구를 사용하기 적합하지 않은 파일이므로 파일 {0}개를 열 수 없습니다."
 
 msgid "no importer"
 msgstr "가져오기 도구 없음"
@@ -922,14 +924,14 @@ msgid "does not exist"
 msgstr "존재하지 않음"
 
 msgid "<html>Cannot open directory ''{0}''.<br>Please select a file.</html>"
-msgstr "<html>''{0}'' 디렉터리를 열 수 없습니다.<br>파일을 선택하세요.</html>"
+msgstr "<html>''{0}'' 디렉터리를 열 수 없습니다.<br>파일을 선택해주세요.</html>"
 
 msgid "Open file"
 msgstr "파일 열기"
 
 msgid "Opening {0} file..."
 msgid_plural "Opening {0} files..."
-msgstr[0] "{0} 파일 여는 중"
+msgstr[0] "파일 {0}개 여는 중..."
 
 msgid "Opening file ''{0}'' ..."
 msgstr "파일 ''{0}'' 여는 중..."
@@ -941,10 +943,10 @@ msgid "Ok"
 msgstr "확인"
 
 msgid "Open Location..."
-msgstr "위치 열기..."
+msgstr "URL 열기..."
 
 msgid "Open an URL."
-msgstr "URL 열기"
+msgstr "URL를 엽니다."
 
 msgid "Enter URL to download:"
 msgstr "다운로드할 URL 입력:"
@@ -953,13 +955,13 @@ msgid "Enter an URL from where data should be downloaded"
 msgstr ""
 
 msgid "Separate Layer"
-msgstr "layer 분리"
+msgstr "레이어 분리"
 
 msgid "Select if the data should be downloaded into a new layer"
-msgstr "데이터가 새로운 레이어에 다운로드 되어야하는지 선택"
+msgstr "데이터가 새로운 레이어에 다운로드 되어야 하는지 선택합니다."
 
 msgid "Download Location"
-msgstr "위치로부터 다운로드"
+msgstr "URL로부터 다운로드"
 
 msgid "Download URL"
 msgstr "URL로 다운로드"
@@ -968,7 +970,7 @@ msgid "Start downloading data"
 msgstr "데이터 다운로드 시작"
 
 msgid "Close dialog and cancel downloading"
-msgstr "다이얼로그를 닫고 다운로드를 취소"
+msgstr "대화 상자를 닫고 다운로드를 취소"
 
 msgid "Download Data"
 msgstr "데이터 다운로드"
@@ -987,7 +989,7 @@ msgid ""
 msgstr ""
 
 msgid "Orthogonalize Shape"
-msgstr ""
+msgstr "형태를 직각화"
 
 msgid "Move nodes so all angles are 90 or 180 degrees"
 msgstr ""
@@ -1016,7 +1018,7 @@ msgid "Orthogonalize"
 msgstr "직각화"
 
 msgid "Usage"
-msgstr "통행량"
+msgstr "용도"
 
 msgid "Selection must consist only of ways and nodes."
 msgstr ""
@@ -1030,70 +1032,72 @@ msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
 msgid "Download from Overpass API ..."
-msgstr ""
+msgstr "Overpass API로부터 다운로드..."
 
 msgid "Download map data from Overpass API server."
-msgstr ""
+msgstr "Overpass API로부터 지도 데이터를 다운로드 합니다."
 
 msgid "Builds an Overpass query using the Overpass Turbo query wizard"
-msgstr ""
+msgstr "Overpass Turbo 쿼리 마법사를 사용해 Overpass 쿼리 구성"
 
 msgid "Build query"
-msgstr "쿼리 빌드"
+msgstr "쿼리 구성"
 
 msgid "<html>The Overpass wizard could not parse the following query:"
-msgstr ""
+msgstr "<html>Overpass 마법사가 다음과 같은 쿼리를 구문 분석할 수 없었습니다:"
 
 msgid "Parse error"
 msgstr "구문 분석 오류"
 
 msgid "Overpass query: "
-msgstr ""
+msgstr "Overpass 쿼리: "
 
 msgid "Paste"
 msgstr "붙여넣기"
 
 msgid "Paste contents of clipboard."
-msgstr ""
+msgstr "클립보드 내용을 붙여넣습니다."
 
 msgid "Paste at source position"
-msgstr ""
+msgstr "원본 위치에 붙여넣기"
 
 msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
-msgstr "Tag 붙여넣기"
+msgstr "태그 붙여넣기"
 
 msgid "Apply tags of contents of paste buffer to all selected items."
-msgstr ""
+msgstr "선택된 모든 항목에 복사된 태그 내용을 붙여넣기"
 
 msgid "Preferences..."
-msgstr "설정..."
+msgstr "환경 설정..."
 
 msgid "Open a preferences dialog for global settings."
-msgstr "전역 설정을 위한 사용자 환경 설정 대화 상자를 엽니다."
+msgstr "전역 설정을 위한 환경 설정 대화 상자를 엽니다."
 
 msgid "Preferences"
-msgstr "기본 설정"
+msgstr "환경 설정"
 
 msgid "Purge..."
-msgstr "새로고침..."
+msgstr "비우기..."
 
 msgid "Forget objects but do not delete them on server when uploading."
-msgstr ""
+msgstr "개체를 지우지만 서버에 업로드할 때는 삭제되지 않습니다."
 
 msgid "Purge"
-msgstr "새로고침"
+msgstr "비우기"
 
 msgid "Confirm Purging"
-msgstr "새로고침 확인"
+msgstr "비우기 확인"
 
 msgid ""
 "This operation makes JOSM forget the selected objects.<br> They will be "
 "removed from the layer, but <i>not</i> deleted<br> on the server when "
 "uploading."
 msgstr ""
+"이 연산은 선택된 개체를 JOSM에서 지우게 합니다.<br> 레이어에서 지워지지만 <br> 서버에 업로드할 때는 <strong>삭제되지 "
+"않습니다.</strong>"
 
 msgid ""
 "The following dependent objects will be purged<br> in addition to the "
@@ -1112,7 +1116,7 @@ msgid "Clear Undo/Redo buffer"
 msgstr "실행 취소/다시 실행 버퍼 지우기"
 
 msgid "Redo"
-msgstr "재실행"
+msgstr "다시 실행"
 
 msgid "Redo the last undone action."
 msgstr "앞단계로 재실행"
@@ -1124,10 +1128,10 @@ msgid "Redo {0}"
 msgstr "{0} 다시 실행"
 
 msgid "Rename layer"
-msgstr "Layer 이름 변경"
+msgstr "레이어 이름 변경"
 
 msgid "Also rename the file"
-msgstr ""
+msgstr "파일 이름도 바꾸기"
 
 msgid "Could not rename file ''{0}''"
 msgstr "''{0}'' 파일 이름을 바꿀 수 없습니다"
@@ -1145,25 +1149,25 @@ msgid "Click to restart later."
 msgstr "나중에 다시 시작하려면 클릭하세요."
 
 msgid "Reverse way"
-msgstr ""
+msgstr "방향 뒤집기"
 
 msgid "Reverse the direction of all selected ways."
-msgstr "선택된 Way의 방향을 모두 뒤집습니다"
+msgstr "선택된 모든 선의 방향을 뒤집습니다."
 
 msgid "Please select at least one way."
-msgstr "최소한 1개 이상의 Way를 선택하세요"
+msgstr "최소한 1개 이상의 선을 선택하세요."
 
 msgid "Reverse ways"
-msgstr "way 방향 뒤집기"
+msgstr "선 방향 뒤집기"
 
 msgid "Save"
 msgstr "저장"
 
 msgid "Save the current data."
-msgstr "현재 데이터 저장"
+msgstr "현재 데이터를 저장합니다."
 
 msgid "File {0} exists. Overwrite?"
-msgstr "{0} 파일이 이미 존재합니다. 겹쳐 쓰겠습니까?"
+msgstr "{0} 파일이 이미 존재합니다. 덮어쓰시겠습니까?"
 
 msgid "No Exporter found! Nothing saved."
 msgstr ""
@@ -1175,25 +1179,25 @@ msgid "Save As..."
 msgstr "다른 이름으로 저장..."
 
 msgid "Save the current data to a new file."
-msgstr "현재 데이터를 새 파일로 저장"
+msgstr "현재 데이터를 새 파일로 저장합니다."
 
 msgid "Search Notes..."
 msgstr "참고 검색..."
 
 msgid "Download notes from the note search API"
-msgstr "참고 검색 API에서 참고를 다운로드"
+msgstr "참고 검색 API에서 참고를 다운로드합니다."
 
 msgid "Search the OSM API for notes containing words:"
 msgstr ""
 
 msgid "Search for notes"
-msgstr "참고를 위한 검색"
+msgstr "참고 검색"
 
 msgid "You must enter a search term"
-msgstr "검색어를 입력해야 합니다"
+msgstr "검색어를 입력해야 합니다."
 
 msgid "Select All"
-msgstr "전체 선택"
+msgstr "모두 선택"
 
 msgid ""
 "Select all undeleted objects in the data layer. This selects incomplete "
@@ -1207,7 +1211,7 @@ msgid "Select non-branching sequences of ways"
 msgstr ""
 
 msgid "Load Session"
-msgstr ""
+msgstr "세션 불러오기"
 
 msgid "Load a session from file."
 msgstr ""
@@ -1219,37 +1223,37 @@ msgid "Loading session ''{0}''"
 msgstr ""
 
 msgid "Data Error"
-msgstr ""
+msgstr "데이터 오류"
 
 msgid "IO Error"
-msgstr ""
+msgstr "입출력 오류"
 
 msgid "<html>Could not load session file ''{0}''.<br>Error is:<br>{1}</html>"
 msgstr ""
 
 msgid "Save Session As..."
-msgstr ""
+msgstr "세션 다른 이름으로 저장..."
 
 msgid "Save the current session to a new file."
-msgstr ""
+msgstr "현재 세션을 새 파일로 저장합니다."
 
 msgid "Session file (archive) (*.joz)"
-msgstr ""
+msgstr "세션 파일 (압축) (*.joz)"
 
 msgid "Session file (*.jos)"
-msgstr ""
+msgstr "세션 파일 (*.jos)"
 
 msgid "Save session"
-msgstr ""
+msgstr "세션 저장"
 
 msgid "<html>Could not save session file ''{0}''.<br>Error is:<br>{1}</html>"
 msgstr ""
 
 msgid "Save Session"
-msgstr ""
+msgstr "세션 저장"
 
 msgid "Save As"
-msgstr ""
+msgstr "저장"
 
 msgid "Layers"
 msgstr "레이어"
@@ -1258,7 +1262,7 @@ msgid "No exporter for this layer"
 msgstr ""
 
 msgid "Show Status Report"
-msgstr "상태 리포트 보기"
+msgstr "상태 보고 보기"
 
 msgid ""
 "Show status report with useful information that can be attached to bugs"
@@ -1268,7 +1272,7 @@ msgid "Help: {0}"
 msgstr "도움말: {0}"
 
 msgid "Status Report"
-msgstr "상태 리포트"
+msgstr "상태 보고"
 
 msgid "Copy to clipboard and close"
 msgstr "클립보드로 복사하고 닫기"
@@ -1277,45 +1281,43 @@ msgid "Close"
 msgstr "닫기"
 
 msgid "Simplify Way"
-msgstr ""
+msgstr "선 간소화"
 
 msgid "Delete unnecessary nodes from a way."
-msgstr ""
+msgstr "선에서 불필요한 점을 삭제합니다."
 
 msgid "Please select at least one way to simplify."
-msgstr ""
+msgstr "최소 1개 이상의 간소화할 선을 선택해 주세요."
 
 msgid "Yes"
-msgstr ""
+msgstr "예"
 
 msgid "Simplify all selected ways"
-msgstr ""
+msgstr "선택된 모든 선 간소화"
 
 msgid "Cancel operation"
-msgstr ""
+msgstr "실행 취소"
 
 msgid ""
 "The selection contains {0} ways. Are you sure you want to simplify them all?"
 msgstr ""
 
 msgid "Simplify ways?"
-msgstr ""
+msgstr "선을 간소화 하겠습니까?"
 
 msgid "Simplify {0} way"
 msgid_plural "Simplify {0} ways"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "선 {0} 간소화"
 
 msgid "Simplify Way (remove {0} node)"
 msgid_plural "Simplify Way (remove {0} nodes)"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "선 간소화 (점 {0} 제거)"
 
 msgid "Split Way"
-msgstr "Way 쪼개기"
+msgstr "선 분할"
 
 msgid "Split a way at the selected node."
-msgstr "선택된 Node에서 Way를 쪼갭니다"
+msgstr "선택된 점에서 선을 분할합니다."
 
 msgid "Cannot split since another split operation is already in progress"
 msgstr ""
@@ -1325,11 +1327,11 @@ msgid ""
 msgstr ""
 
 msgid "The selected nodes do not share the same way."
-msgstr "선택된 Node들은 같은 Way를 공유하고 있지 않습니다."
+msgstr "선택된 점들은 같은 선을 공유하고 있지 않습니다."
 
 msgid "The selected node is not in the middle of any way."
 msgid_plural "The selected nodes are not in the middle of any way."
-msgstr[0] "선택된 node는 어떤 way에도 속해 있지 않습니다"
+msgstr[0] "선택된 점은 어떤 선 중간에 있지 않습니다."
 
 msgid ""
 "There is more than one way using the node you selected. Please select the "
@@ -1337,24 +1339,24 @@ msgid ""
 msgid_plural ""
 "There is more than one way using the nodes you selected. Please select the "
 "way also."
-msgstr[0] "선택한 node를 사용하는 way가 하나 이상 있습니다. way도 선택해 주세요"
+msgstr[0] "선택한 점을 사용하는 선이 하나 이상 있습니다. 선도 선택해 주세요."
 
 msgid "Which way segment should reuse the history of {0}?"
 msgstr ""
 
 msgid " [id: {0}]"
-msgstr ""
+msgstr " [id: {0}]"
 
 msgid "Segment {0}: {1}"
-msgstr ""
+msgstr "부분 {0}: {1}"
 
 msgid "You must select two or more nodes to split a circular way."
-msgstr "환형 way를 나누기 위해서는 2개 이상의 node를 선택해야 합니다"
+msgstr "환형 선을 분할하기 위해서는 2개 이상의 점을 선택해야 합니다."
 
 msgid ""
 "The way cannot be split at the selected nodes. (Hint: Select nodes in the "
 "middle of the way.)"
-msgstr "선택된 node에서 way를 나눌 수 없습니다 (힌트: way의 중간에 있는 node를 선택하세요)"
+msgstr "선택된 점에서 선을 분할할 수 없습니다. (힌트: 선의 중간에 있는 점을 선택하세요.)"
 
 msgid ""
 "A role based relation membership was copied to all new ways.<br>You should "
@@ -1372,55 +1374,55 @@ msgstr[0] ""
 msgstr[1] ""
 
 msgid "Toggle GPX Lines"
-msgstr ""
+msgstr "GPX 선 토글"
 
 msgid "Draw lines between raw gps points."
-msgstr "원본 gps point 사이의 선을 그림"
+msgstr "원본 gps 포인트 사이의 선을 그림"
 
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
-msgstr "way 떼어내기"
+msgstr "선 떼어내기"
 
 msgid "Duplicate nodes that are used by multiple ways."
-msgstr "중복된 node는 여러 way에서 사용중입니다"
+msgstr "중복된 선은 여러 선에서 사용 중입니다."
 
 msgid "This node is not glued to anything else."
-msgstr "이 node는 어디에도 붙어있지 않습니다."
+msgstr "이 선은 어디에도 붙어있지 않습니다."
 
 msgid "None of these nodes are glued to anything else."
-msgstr "이들 node는 어디에도 붙어있지 않습니다"
+msgstr "이들 점은 어디에도 붙어있지 않습니다."
 
 msgid "None of this way''s nodes are glued to anything else."
 msgstr ""
 
 msgid "The current selection cannot be used for unglueing."
-msgstr "현재 선택된 것들은 떼어내기에 사용할 수 없습니다"
+msgstr "현재 선택된 것들은 떼어내기에 사용할 수 없습니다."
 
 msgid "Select either:"
-msgstr "이들중 하나를 선택:"
+msgstr "다음과 같은 경우의 것들만 선택해야 합니다:"
 
 msgid "* One tagged node, or"
-msgstr ""
+msgstr "* 태그된 1개의 점"
 
 msgid "* One node that is used by more than one way, or"
-msgstr "* 1개 이상의 way에서 사용된 한 개의 node, 또는,"
+msgstr "* 2개 이상의 선에 사용된 1개의 점"
 
 msgid ""
 "* One node that is used by more than one way and one of those ways, or"
-msgstr "* 1개 이상의 way에 사용된 한 개의 node와 way중 하나, 또는,"
+msgstr ""
 
 msgid ""
 "* One way that has one or more nodes that are used by more than one way, or"
-msgstr "* 1개 이상의 way에서 사용되는 1개 이상의 node를 지닌 하나의 way, 또는,"
+msgstr "*2개 이상의 선에서 사용되는 1개 이상의 점을 지닌 1개의 선"
 
 msgid ""
 "* One way and one or more of its nodes that are used by more than one way."
-msgstr "* 하나의 way와 하나 이상의 way에서 사용되는 1개 이상의 node."
+msgstr "* 1개의 선과, 2개 이상의 선에서 사용되는 1개 이상의 점"
 
 msgid ""
 "Note: If a way is selected, this way will get fresh copies of the unglued\n"
@@ -1430,28 +1432,28 @@ msgid ""
 msgstr ""
 
 msgid "Existing node"
-msgstr ""
+msgstr "기존의 점"
 
 msgid "Both nodes"
-msgstr ""
+msgstr "둘 다"
 
 msgid "New node"
-msgstr ""
+msgstr "새 점"
 
 msgid "Tags / Memberships"
 msgstr ""
 
 msgid "Unglue"
-msgstr ""
+msgstr "떼어내기"
 
 msgid "Where should the tags of the node be put?"
-msgstr ""
+msgstr "점의 태그를 어디에 두겠습니까?"
 
 msgid "Where should the memberships of this node be put?"
 msgstr ""
 
 msgid "Unglued Node"
-msgstr "node 떼기"
+msgstr "점 떼어내기"
 
 msgid "Dupe into {0} node"
 msgid_plural "Dupe into {0} nodes"
@@ -1464,13 +1466,15 @@ msgstr[0] ""
 msgstr[1] ""
 
 msgid "Unglue confirmation"
-msgstr ""
+msgstr "떼어내기 확인"
 
 msgid ""
 "You are about to unglue nodes outside of the area you have "
 "downloaded.<br>This can cause problems because other objects (that you do "
 "not see) might use them.<br>Do you really want to unglue?"
 msgstr ""
+"다운로드된 지역 바깥에 있는 점을 떼어내려고 합니다.<br>다른 개체(볼 수 없음)가 사용할 수 있으므로 문제가 발생할 수 "
+"있습니다.<br>정말 떼어내시겠습니까?"
 
 msgid ""
 "You are about to unglue incomplete objects.<br>This will cause problems "
@@ -1479,22 +1483,20 @@ msgstr ""
 
 msgid "Unglueing affected {0} relation: {1}"
 msgid_plural "Unglueing affected {0} relations: {1}"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "{0}개의 관계가 떼어내기 영향을 받았습니다: {1}"
 
 msgid "Ensure that the relation has not been broken!"
 msgid_plural "Ensure that the relations have not been broken!"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "관계가 깨지지 않았는지 확인하십시오!"
 
 msgid "Disconnect Node from Way"
-msgstr ""
+msgstr "선에서 점 떼어내기"
 
 msgid "Disconnect nodes from a way they currently belong to"
-msgstr ""
+msgstr "선에 속해 있는 점을 떼어냅니다."
 
 msgid "Select at least one node to be disconnected."
-msgstr ""
+msgstr "최소 1개의 떼어낼 점을 선택해야 합니다."
 
 msgid "Selected node cannot be disconnected from anything."
 msgid_plural "Selected nodes cannot be disconnected from anything."
@@ -1518,22 +1520,22 @@ msgid "Undo the last action."
 msgstr "마지막 실행 취소"
 
 msgid "Undo ..."
-msgstr ""
+msgstr "실행 취소..."
 
 msgid "Undo {0}"
-msgstr ""
+msgstr "{0} 실행 취소"
 
 msgid "Unselect All"
-msgstr "모두 선택 해제"
+msgstr "선택 모두 해제"
 
 msgid "Unselect all objects."
-msgstr "모든 object를 선택 해제"
+msgstr "모든 개체를 선택 해제합니다."
 
 msgid "Update data"
-msgstr ""
+msgstr "데이터 업데이트"
 
 msgid "Updates the objects in the active data layer from the server."
-msgstr ""
+msgstr "활성화된 데이터 레이어 내의 개체를 서버로부터 업데이트합니다."
 
 msgid "Update modified"
 msgstr ""
@@ -1549,11 +1551,11 @@ msgid "Did not find an object with id {0} in the current dataset"
 msgstr ""
 
 msgid "Update selection"
-msgstr ""
+msgstr "선택된 것들 업데이트"
 
 msgid ""
 "Updates the currently selected objects from the server (re-downloads data)"
-msgstr ""
+msgstr "현재 선택된 개체를 서버로부터 업데이트합니다. (데이터 다시 다운로드)"
 
 msgid "There are no selected objects to update."
 msgstr ""
@@ -1562,10 +1564,10 @@ msgid "Selection empty"
 msgstr "선택된 것이 없습니다"
 
 msgid "Upload data"
-msgstr ""
+msgstr "데이터 업로드"
 
 msgid "Upload all changes in the active data layer to the OSM server"
-msgstr ""
+msgstr "활성화된 데이터 레이어의 바뀐점을 모두 OSM 서버에 업로드 합니다."
 
 msgid ""
 "<html>The data to be uploaded participates in unresolved conflicts of layer "
@@ -1583,10 +1585,10 @@ msgid ""
 msgstr ""
 
 msgid "Ignore this hint and upload anyway"
-msgstr ""
+msgstr "이 힌트를 무시하고 어쨌든 업로드"
 
 msgid "No changes to upload."
-msgstr "업로드할 변경내용이 없습니다."
+msgstr "업로드할 변경이 없습니다."
 
 msgid "Nothing to upload. Get some data first."
 msgstr "업로드할 것이 없습니다."
@@ -1595,16 +1597,16 @@ msgid "Upload note changes to server"
 msgstr ""
 
 msgid "Upload notes"
-msgstr ""
+msgstr "참고 업로드"
 
 msgid "Uploading notes to server"
-msgstr ""
+msgstr "서버에 참고 업로드"
 
 msgid "Upload selection"
-msgstr ""
+msgstr "선택된 것들 업로드"
 
 msgid "Upload all changes in the current selection to the OSM server."
-msgstr ""
+msgstr "선택된 것들의 바뀐점을 모두 OSM 서버에 업로드 합니다."
 
 msgid "Checking parents for deleted objects"
 msgstr ""
@@ -1616,19 +1618,19 @@ msgid "Checking for deleted parents in the local dataset"
 msgstr ""
 
 msgid "Validation"
-msgstr ""
+msgstr "유효성 검사"
 
 msgid "Performs the data validation"
-msgstr ""
+msgstr "데이터 유효성 검사 수행"
 
 msgid "Validating"
-msgstr ""
+msgstr "유효성 검사 중"
 
 msgid "Test {0}/{1}: Starting {2}"
 msgstr ""
 
 msgid "Updating ignored errors ..."
-msgstr ""
+msgstr "무시된 오류 업데이트 중..."
 
 msgid "Viewport Following"
 msgstr ""
@@ -1652,13 +1654,13 @@ msgid "Zoom In"
 msgstr "확대"
 
 msgid "Zoom In (Keypad)"
-msgstr ""
+msgstr "확대 (키패드)"
 
 msgid "Zoom Out"
 msgstr "축소"
 
 msgid "Zoom Out (Keypad)"
-msgstr ""
+msgstr "축소 (키패드)"
 
 msgid "Zoom to"
 msgstr ""
@@ -1683,106 +1685,106 @@ msgstr ""
 
 msgctxt "audio"
 msgid "Back"
-msgstr ""
+msgstr "되감기"
 
 msgctxt "audio"
 msgid "Jump back."
-msgstr ""
+msgstr "뒤로감습니다."
 
 msgid "Audio: {0}"
 msgstr "오디오: {0}"
 
 msgctxt "audio"
 msgid "Faster"
-msgstr ""
+msgstr "빠르게"
 
 msgctxt "audio"
 msgid "Faster Forward"
-msgstr ""
+msgstr "빠르게 재생합니다."
 
 msgctxt "audio"
 msgid "Forward"
-msgstr ""
+msgstr "빨리감기"
 
 msgctxt "audio"
 msgid "Jump forward"
-msgstr ""
+msgstr "빨리감습니다."
 
 msgctxt "audio"
 msgid "Next Marker"
-msgstr ""
+msgstr "다음 지점"
 
 msgctxt "audio"
 msgid "Play next marker."
-msgstr ""
+msgstr "다음 지점을 재생합니다."
 
 msgctxt "audio"
 msgid "Play/Pause"
-msgstr ""
+msgstr "재생/일시정지"
 
 msgid "Play/pause audio."
-msgstr "오디오 재생/일시정지"
+msgstr "오디오를 재생/일시정지합니다."
 
 msgctxt "audio"
 msgid "Previous Marker"
-msgstr ""
+msgstr "이전 지점"
 
 msgctxt "audio"
 msgid "Play previous marker."
-msgstr ""
+msgstr "이전 지점을 재생합니다."
 
 msgctxt "audio"
 msgid "Slower"
-msgstr ""
+msgstr "느리게"
 
 msgctxt "audio"
 msgid "Slower Forward"
-msgstr ""
+msgstr "느리게 재생합니다."
 
 msgid "Downloading changeset content"
-msgstr ""
+msgstr "바뀜집합 내용 다운로드 중"
 
 msgid "({0}/{1}) Downloading changeset {2}..."
-msgstr ""
+msgstr "({0}/{1}) 바뀜집합 {2} 다운로드 중..."
 
 msgid "({0}/{1}) Downloading content for changeset {2}..."
-msgstr ""
+msgstr "({0}/{1}) 바뀜집합 {2} 내용 다운로드 중..."
 
 msgid "Download changesets"
-msgstr ""
+msgstr "바뀜집합 다운로드"
 
 msgid "Querying and downloading changesets"
-msgstr ""
+msgstr "바뀜집합 쿼리와 다운로드 중"
 
 msgid "Determine user id for current user..."
 msgstr ""
 
 msgid "Query and download changesets ..."
-msgstr ""
+msgstr "바뀜집합 쿼리와 다운로드..."
 
 msgid "Errors during download"
-msgstr ""
+msgstr "다운로드 도중 오류가 발생하였습니다."
 
 msgid "Download GPS"
-msgstr ""
+msgstr "GPS 다운로드"
 
 msgid "Downloading GPS data"
-msgstr "GPS 정보 다운로드"
+msgstr "GPS 데이터 다운로드 중"
 
 msgid "Downloaded GPX Data"
-msgstr "다운로드된 GPX"
+msgstr "다운로드된 GPX 데이터"
 
 msgid "Markers from {0}"
 msgstr ""
 
 msgid "Download OSM Notes"
-msgstr ""
+msgstr "OSM 참고 다운로드 중"
 
 msgid "Downloading Notes"
-msgstr ""
+msgstr "참고 다운로드 중"
 
 msgid "Notes"
-msgstr ""
+msgstr "참고"
 
 msgid "{0} note has been downloaded."
 msgid_plural "{0} notes have been downloaded."
@@ -1801,47 +1803,47 @@ msgid "More notes to download"
 msgstr ""
 
 msgid "Download OSM Notes within Bounds"
-msgstr ""
+msgstr "영역 내에서 OSM 참고 다운로드"
 
 msgid "Download OSM Note by ID"
-msgstr ""
+msgstr "ID로 OSM 참고 다운로드"
 
 msgid "Download Compressed OSM Change"
-msgstr ""
+msgstr "압축된 OSM 바뀐점 다운로드"
 
 msgid "Download OSM Change"
-msgstr ""
+msgstr "OSM 바뀐점 다운로드"
 
 msgid "Download Compressed OSM"
-msgstr ""
+msgstr "압축된 OSM 바뀐점 다운로드"
 
 msgid "Download OSM object by ID"
-msgstr ""
+msgstr "ID로 OSM 개체 다운로드"
 
 msgid "Download OSM"
-msgstr ""
+msgstr "OSM 다운로드"
 
 msgid "Downloading data"
-msgstr "다운로드 데이터"
+msgstr "데이터 다운로드 중"
 
 msgid ""
 "Ignoring exception because download has been canceled. Exception was: {0}"
 msgstr ""
 
 msgid "No data found in this area."
-msgstr ""
+msgstr "이 영역에서 데이터를 찾을 수 없었습니다."
 
 msgid "OSM Server URL:"
-msgstr ""
+msgstr "OSM 서버 URL:"
 
 msgid "Command"
-msgstr ""
+msgstr "명령"
 
 msgid "Request details: {0}"
 msgstr ""
 
 msgid "Download OSM URL"
-msgstr ""
+msgstr "OSM URL 다운로드"
 
 msgid "There was {0} conflict during import."
 msgid_plural "There were {0} conflicts during import."
@@ -1863,10 +1865,10 @@ msgid "({0}/{1}) Loading parents of relation {2}"
 msgstr ""
 
 msgid "Download session"
-msgstr ""
+msgstr "세션 다운로드"
 
 msgid "Download {0} of {1} ({2} left)"
-msgstr "다운로드 {0}/{1} ({2} 남음)"
+msgstr "{0}/{1} 다운로드 ({2} 남음)"
 
 msgid "Updating data"
 msgstr "데이터 업데이트 중"
@@ -1880,7 +1882,7 @@ msgid ""
 msgstr ""
 
 msgid "Ignore"
-msgstr ""
+msgstr "무시"
 
 msgid "Click to abort and to resume editing"
 msgstr ""
@@ -1913,34 +1915,34 @@ msgid "The following errors occurred during mass download: {0}"
 msgstr ""
 
 msgid "Error during download"
-msgstr ""
+msgstr "다운로드 도중 오류가 발생하였습니다."
 
 msgid "Add a new Note"
-msgstr ""
+msgstr "새 참고 추가"
 
 msgid "Add note mode"
-msgstr ""
+msgstr "참고 모드 추가"
 
 msgid "Click the location where you wish to create a new note"
 msgstr ""
 
 msgid "Create new note"
-msgstr ""
+msgstr "새 참고 생성"
 
 msgid "Create note"
-msgstr ""
+msgstr "참고 생성"
 
 msgid "Enter a detailed comment to create a note"
-msgstr ""
+msgstr "생성할 참고에 상세한 설명 입력"
 
 msgid "You must enter a comment to create a new note"
-msgstr ""
+msgstr "생성할 참고에 상세한 설명을 입력해야 합니다."
 
 msgid "Delete Mode"
 msgstr "삭제 모드"
 
 msgid "Delete nodes or ways."
-msgstr "node나 way 삭제"
+msgstr "점이나 선을 삭제"
 
 msgid "Mode: {0}"
 msgstr "모드: {0}"
@@ -1951,10 +1953,10 @@ msgid ""
 msgstr ""
 
 msgid "draw angle snap"
-msgstr ""
+msgstr "각도 스냅 그리기"
 
 msgid "draw angle snap highlight"
-msgstr ""
+msgstr "각도 스냅 강조 그리기"
 
 msgid "helper line"
 msgstr ""
@@ -1963,56 +1965,56 @@ msgid "Draw"
 msgstr "그리기"
 
 msgid "Draw nodes"
-msgstr "node 그리기"
+msgstr "점 그리기"
 
 msgid "Mode: Draw Angle snapping"
-msgstr ""
+msgstr "모드: 각도 스내핑 그리기"
 
 msgid "Backspace in Add mode"
 msgstr ""
 
 msgid "Cannot add a node outside of the world."
-msgstr "세계 바깥에 node를 추가할 수 없습니다"
+msgstr "세계 바깥에 점을 추가할 수 없습니다."
 
 msgid "Add node"
-msgstr "노드 추가"
+msgstr "점 추가"
 
 msgid "Add node into way"
-msgstr "way에 node 추가"
+msgstr "선에 점 추가"
 
 msgid "Connect existing way to node"
-msgstr "존재하는 way를 node에 연결"
+msgstr "존재하는 선을 점에 연결"
 
 msgid "Add a new node to an existing way"
-msgstr "존재하는 way에 새 node 추가"
+msgstr "존재하는 선에 새 점 추가"
 
 msgid "Add node into way and connect"
-msgstr "way에 node 추가 후 연결"
+msgstr "선에 점 추가 후 연결"
 
 msgid "Create new node."
-msgstr "새로운 node 만들기"
+msgstr "새로운 점 만들기"
 
 msgid "Select node under cursor."
-msgstr "커서 위치의 node 선택"
+msgstr "커서 위치의 점 선택"
 
 msgid "Insert new node into way."
 msgid_plural "Insert new node into {0} ways."
-msgstr[0] "way {0}개에 새 node 삽입"
+msgstr[0] "선 {0}개에 새 점 삽입"
 
 msgid "Start new way from last node."
-msgstr "마지막 node에서 새 way 시작"
+msgstr "마지막 점에서 새 선 시작"
 
 msgid "Continue way from last node."
-msgstr "마지막 node에서 way 계속"
+msgstr "마지막 점에서 선 계속"
 
 msgid "Angle snapping active."
-msgstr ""
+msgstr "각도 스내핑 활성화"
 
 msgid "Finish drawing."
 msgstr "그리기 끝내기"
 
 msgid "Angle snapping"
-msgstr ""
+msgstr "각도 스내핑"
 
 msgid "Switch angle snapping mode while drawing"
 msgstr ""
@@ -2027,16 +2029,16 @@ msgid "Snap to node projections"
 msgstr ""
 
 msgid "Disable"
-msgstr ""
+msgstr "비활성화"
 
 msgid "0,90,..."
-msgstr ""
+msgstr "0,90,..."
 
 msgid "0,45,90,..."
-msgstr ""
+msgstr "0,45,90,..."
 
 msgid "0,30,45,60,90,..."
-msgstr ""
+msgstr "0,30,45,60,90,..."
 
 msgid "FIX"
 msgstr ""
@@ -2076,7 +2078,7 @@ msgid ""
 msgstr ""
 
 msgid "Draw a rectangle of the desired size, then release the mouse button."
-msgstr "원하는 크기의 사각형을 그리고 마우스 버튼을 떼십시오"
+msgstr "원하는 크기의 직사각형을 그리고 마우스 버튼을 떼십시오."
 
 msgid "Extrude: main line"
 msgstr ""
@@ -2088,10 +2090,10 @@ msgid "Extrude Way"
 msgstr ""
 
 msgid "Improve Way Accuracy"
-msgstr ""
+msgstr "선 정확도 개선"
 
 msgid "Improve Way Accuracy mode"
-msgstr ""
+msgstr "선 정확도 개선 모드"
 
 msgid "improve way accuracy helper line"
 msgstr ""
@@ -2100,7 +2102,7 @@ msgid "Click on the way to start improving its shape."
 msgstr ""
 
 msgid "Select a way that you want to make more accurate."
-msgstr ""
+msgstr "보다 정밀하게 만들 선을 선택하세요."
 
 msgid ""
 "Click to add a new node. Release Ctrl to move existing nodes or hold Alt to "
@@ -2129,10 +2131,10 @@ msgid "make parallel helper line"
 msgstr ""
 
 msgid "Parallel"
-msgstr ""
+msgstr "평행선"
 
 msgid "Make parallel copies of ways"
-msgstr ""
+msgstr "선을 평행하게 복제"
 
 msgid ""
 "Select ways as in Select mode. Drag selected ways or a single way to create "
@@ -2156,7 +2158,7 @@ msgid ""
 msgstr ""
 
 msgid "Select, move, scale and rotate objects"
-msgstr ""
+msgstr "선택, 이동, 개체 크기 조절 또는 회전"
 
 msgid ""
 "Are you sure that you want to move elements with attached ways that are "
@@ -2172,31 +2174,32 @@ msgid_plural ""
 "an error.\n"
 "Really move them?"
 msgstr[0] ""
-msgstr[1] ""
+"{0}개 이상의 요소를 이동하려고 합니다. 상당수의 요소를 이동하면 종종 오류가 발생합니다.\n"
+"정말로 이동하겠습니까?"
 
 msgid "Move elements"
-msgstr ""
+msgstr "요소 이동"
 
 msgid "Move them"
-msgstr ""
+msgstr "이동"
 
 msgid "Undo move"
 msgstr "이동 취소"
 
 msgid "Release the mouse button to select the objects in the rectangle."
-msgstr "사각형 안의 개체를 선택하려면 마우스 버튼을 떼십시오"
+msgstr "직사각형 안의 개체를 선택하려면 마우스 버튼을 떼십시오."
 
 msgid "Ctrl to merge with nearest node."
 msgstr ""
 
 msgid "Release the mouse button to stop moving."
-msgstr ""
+msgstr "이동을 멈추려면 마우스 버튼을 떼십시오."
 
 msgid "Release the mouse button to stop rotating."
-msgstr "회전을 멈추기 위해 마우스 버튼을 떼십시오"
+msgstr "회전을 멈추려면 마우스 버튼을 떼십시오."
 
 msgid "Release the mouse button to stop scaling."
-msgstr ""
+msgstr "크기 조절을 멈추려면 마우스 버튼을 떼십시오."
 
 msgid ""
 "Move objects by dragging; Shift to add to selection (Ctrl to toggle); Shift-"
@@ -2212,15 +2215,15 @@ msgid "Zoom"
 msgstr "확대"
 
 msgid "Zoom and move map"
-msgstr "map을 확대하고 이동"
+msgstr "지도를 확대"
 
 msgid ""
 "Zoom by dragging or Ctrl+. or Ctrl+,; move with Ctrl+up, left, down, right; "
 "move zoom with right button"
-msgstr ""
+msgstr "확대: 드래그나 Ctrl+.; 축소: Ctrl+,; 이동: Ctrl+방향키나 마우스 오른쪽 버튼"
 
 msgid "Add all objects selected in the current dataset after the last member"
-msgstr ""
+msgstr "선택한 모든 개체를 현재 데이터 집합 맨 아래에 추가합니다."
 
 msgid "Add selection to relation"
 msgstr ""
@@ -2236,28 +2239,28 @@ msgstr[0] ""
 msgstr[1] ""
 
 msgid "Delete the selected relation"
-msgstr ""
+msgstr "선택한 관계 삭제"
 
 msgid "Download all members of the selected relations"
-msgstr ""
+msgstr "선택한 관계의 모든 구성 요소를 다운로드합니다."
 
 msgid "Download members"
-msgstr ""
+msgstr "구성 요소 다운로드"
 
 msgid "Download incomplete members of selected relations"
-msgstr ""
+msgstr "선택한 관계의 다운로드되지 않은 구성 요소를 다운로드합니다."
 
 msgid "Download incomplete members"
-msgstr ""
+msgstr "다운로드되지 않은 구성 요소 다운로드"
 
 msgid "Create a copy of this relation and open it in another editor window"
-msgstr ""
+msgstr "이 관계의 사본을 생성하고 편집기 창을 엽니다."
 
 msgid "Edit"
-msgstr "고치기"
+msgstr "편집"
 
 msgid "Call relation editor for selected relation"
-msgstr ""
+msgstr "선택한 관계를 위한 편집기 열기"
 
 msgid ""
 "You are about to open <b>{0}</b> different relation editor "
@@ -2269,16 +2272,16 @@ msgstr[0] ""
 msgstr[1] ""
 
 msgid "Confirmation"
-msgstr ""
+msgstr "확인"
 
 msgid "List of recent relations"
 msgstr ""
 
 msgid "Open recent relation"
-msgstr ""
+msgstr "최근 관계 열기"
 
 msgid "Relation Editor: {0}"
-msgstr ""
+msgstr "관계 편집기: {0}"
 
 msgid "Select in relation list"
 msgstr ""
@@ -2290,13 +2293,13 @@ msgid "Add the members of all selected relations to current selection"
 msgstr ""
 
 msgid "Select the members of all selected relations"
-msgstr ""
+msgstr "선택한 모든 관계의 구성 요소를 선택합니다."
 
 msgid "Select members (add)"
-msgstr ""
+msgstr "구성 요소 선택 (추가)"
 
 msgid "Select members"
-msgstr ""
+msgstr "구성 요소 선택"
 
 msgid "Add the selected relations to the current selection"
 msgstr ""
@@ -2305,10 +2308,10 @@ msgid "Set the current selection to the list of selected relations"
 msgstr ""
 
 msgid "Select relation (add)"
-msgstr ""
+msgstr "관계 선택 (추가)"
 
 msgid "Select relation"
-msgstr ""
+msgstr "관계 선택"
 
 msgid "<not>"
 msgstr ""
@@ -2329,13 +2332,13 @@ msgid "<colon>"
 msgstr ""
 
 msgid "<equals>"
-msgstr ""
+msgstr "<등호>"
 
 msgid "<key>"
 msgstr ""
 
 msgid "<question mark>"
-msgstr ""
+msgstr "<물음표>"
 
 msgid "<end-of-file>"
 msgstr ""
@@ -2344,25 +2347,25 @@ msgid "Search..."
 msgstr "찾기..."
 
 msgid "Search for objects."
-msgstr "대상 탐색"
+msgstr "개체를 탐색합니다."
 
 msgid "{0}: "
-msgstr ""
+msgstr "{0}: "
 
 msgid "Filter string:"
-msgstr ""
+msgstr "문자열 필터:"
 
 msgid "Search string:"
-msgstr ""
+msgstr "찾을 문자열:"
 
 msgid "Enter the search expression"
-msgstr ""
+msgstr "검색 표현식 입력"
 
 msgid "replace selection"
-msgstr "선택바꾸기"
+msgstr "선택 바꾸기"
 
 msgid "add to selection"
-msgstr "선택 추가하기"
+msgstr "선택 추가"
 
 msgid "remove from selection"
 msgstr "선택에서 제거"
@@ -2371,37 +2374,37 @@ msgid "find in selection"
 msgstr "선택된 것에서 찾기"
 
 msgid "case sensitive"
-msgstr "대소문자 가림"
+msgstr "대소문자 구분"
 
 msgid "all objects"
-msgstr ""
+msgstr "모든 개체"
 
 msgid "Also include incomplete and deleted objects in search."
 msgstr ""
 
 msgid "standard"
-msgstr ""
+msgstr "표준"
 
 msgid "regular expression"
 msgstr "정규식"
 
 msgid "MapCSS selector"
-msgstr ""
+msgstr "MapCSS 선택자"
 
 msgid "add toolbar button"
-msgstr ""
+msgstr "도구 모음 버튼 추가"
 
 msgid "Invalid search expression"
-msgstr ""
+msgstr "잘못된 검색 표현식"
 
 msgid "Filter"
 msgstr "필터"
 
 msgid "Search"
-msgstr "검색"
+msgstr "찾기"
 
 msgid "Submit filter"
-msgstr ""
+msgstr "필터 제출"
 
 msgid "Start Search"
 msgstr "찾기 시작"
@@ -2411,24 +2414,27 @@ msgid ""
 "\n"
 " {0}"
 msgstr ""
+"검색 표현식이 잘못되었습니다: \n"
+"\n"
+" {0}"
 
 msgid "basic examples"
-msgstr ""
+msgstr "기본 예시"
 
 msgid "Baker Street"
-msgstr ""
+msgstr "서울 시청"
 
 msgid "''Baker'' and ''Street'' in any key"
-msgstr ""
+msgstr "\"서울\"과 \"시청\"이 포함된 키 검색"
 
 msgid "\"Baker Street\""
-msgstr ""
+msgstr "\"서울 시청\""
 
 msgid "''Baker Street'' in any key"
-msgstr ""
+msgstr "\"서울 시청\"이 포함된 키 검색"
 
 msgid "basics"
-msgstr ""
+msgstr "기본"
 
 msgid "''valuefragment'' anywhere in ''key''"
 msgstr ""
@@ -2458,7 +2464,7 @@ msgid ""
 msgstr ""
 
 msgid "combinators"
-msgstr ""
+msgstr "결합자"
 
 msgid "logical and (both expressions have to be satisfied)"
 msgstr ""
@@ -2473,25 +2479,25 @@ msgid "use parenthesis to group expressions"
 msgstr ""
 
 msgid "objects"
-msgstr ""
+msgstr "개체"
 
 msgid "all nodes"
-msgstr ""
+msgstr "모든 점"
 
 msgid "all ways"
-msgstr ""
+msgstr "모든 선"
 
 msgid "all relations"
-msgstr ""
+msgstr "모든 관계"
 
 msgid "all closed ways"
-msgstr ""
+msgstr "마감된 모든 선"
 
 msgid "object without useful tags"
-msgstr ""
+msgstr "태그가 붙지 않은 개체"
 
 msgid "metadata"
-msgstr ""
+msgstr "메타데이터"
 
 msgid "objects changed by user"
 msgstr ""
@@ -2509,42 +2515,42 @@ msgid "objects with last modification timestamp within range"
 msgstr ""
 
 msgid "properties"
-msgstr ""
+msgstr "속성"
 
 msgid ""
 "ways with at least 20 nodes, or relations containing at least 20 nodes"
-msgstr ""
+msgstr "최소 20개의 점을 가진 선과, 최소 20개의 점을 포함하는 관계"
 
 msgid ""
 "nodes with at least 3 referring ways, or relations containing at least 3 ways"
-msgstr ""
+msgstr "최소 3개의 선이 지나가는 점과, 최소 3개의 선을 포함하는 관계"
 
 msgid "objects having 5 to 10 tags"
-msgstr ""
+msgstr "5~10개의 태그를 갖고 있는 개체"
 
 msgid "objects with given role in a relation"
 msgstr ""
 
 msgid "closed ways with an area of 100 m²"
-msgstr ""
+msgstr "영역이 100 m² 이하인 마감된 선"
 
 msgid "ways with a length of 200 m or more"
-msgstr ""
+msgstr "길이가 200m 이상인 선"
 
 msgid "state"
-msgstr ""
+msgstr "상태"
 
 msgid "all modified objects"
-msgstr ""
+msgstr "수정된 모든 개체"
 
 msgid "all new objects"
-msgstr ""
+msgstr "모든 새 개체"
 
 msgid "all selected objects"
-msgstr ""
+msgstr "선택한 모든 개체"
 
 msgid "all incomplete objects"
-msgstr ""
+msgstr "다운로드되지 않은 모든 개체"
 
 msgid "all deleted objects (checkbox <b>{0}</b> must be enabled)"
 msgstr ""
@@ -2571,16 +2577,16 @@ msgid "every n-th member of relation and/or every n-th node of way"
 msgstr ""
 
 msgid "view"
-msgstr ""
+msgstr "보기"
 
 msgid "objects in current view"
-msgstr ""
+msgstr "현재 보기 안에 개체"
 
 msgid "objects (and all its way nodes / relation members) in current view"
 msgstr ""
 
 msgid "objects in downloaded area"
-msgstr ""
+msgstr "다운로드된 지역 안에 개체"
 
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
@@ -2601,39 +2607,38 @@ msgid "Found {0} matches"
 msgstr "{0}개를 찾음"
 
 msgid "Searching"
-msgstr ""
+msgstr "찾는 중"
 
 msgid "Searching in {0} object"
 msgid_plural "Searching in {0} objects"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "{0}개의 개체 찾음"
 
 msgctxt "search"
 msgid "CS"
-msgstr ""
+msgstr "대소자구분"
 
 msgctxt "search"
 msgid "CI"
-msgstr ""
+msgstr "대소자비구분"
 
 msgctxt "search"
 msgid "RX"
-msgstr ""
+msgstr "표현식"
 
 msgctxt "search"
 msgid "CSS"
-msgstr ""
+msgstr "CSS"
 
 msgctxt "search"
 msgid "A"
-msgstr ""
+msgstr "모두"
 
 msgid ""
 "The regex \"{0}\" had a parse error at offset {1}, full error:\n"
 "\n"
 "{2}"
 msgstr ""
-"정규식 \"{0}\"의 오프셋 {1}에서 해석 오류 발생. 에러:\n"
+"정규식 \"{0}\"의 오프셋 {1}에서 구문 분석 오류 발생. 에러:\n"
 "{2}"
 
 msgid ""
@@ -2643,40 +2648,40 @@ msgid ""
 msgstr ""
 
 msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
+msgstr "타임스탬프 ''{0}''를 구문 분석하지 못함"
 
 msgid "Expecting {0} after {1}"
 msgstr ""
 
 msgid "Range of primitive ids expected"
-msgstr ""
+msgstr "ID값이 범위를 벗어남"
 
 msgid "Range of changeset ids expected"
-msgstr ""
+msgstr "바뀜집합 ID값이 범위를 벗어남"
 
 msgid "Range of versions expected"
-msgstr ""
+msgstr "버전값이 범위를 벗어남"
 
 msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr "tag 연산자가 사용될 때 key는 비워둘 수 없습니다. 예: key=값"
+msgstr "tag 연산자가 사용될 때는 key를 비워둘 수 없음. 예: key=값"
 
 msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr "알려지지 않은 요소 타잎: {0}. node, way, relation만 사용할 수 있음."
+msgstr "알려지지 않은 요소 유형: {0}. node, way, relation만 사용할 수 있음"
 
 msgid "Positive integer expected"
-msgstr ""
+msgstr "양의 정수가 지정되지 않음"
 
 msgid "Range of numbers expected"
-msgstr ""
+msgstr "숫자값이 범위를 벗어남"
 
 msgid "Unexpected token. Expected {0}, found {1}"
 msgstr ""
 
 msgid "Failed to parse MapCSS selector"
-msgstr ""
+msgstr "MapCSS 선택자 구문 분석을 실패함"
 
 msgid "Unexpected token: {0}"
-msgstr "기대하지 않은 토큰: {0}"
+msgstr "예기치 않은 토큰: {0}"
 
 msgid "Missing parameter for OR"
 msgstr ""
@@ -2720,7 +2725,7 @@ msgid ""
 msgstr ""
 
 msgid "Relation ..."
-msgstr ""
+msgstr "관계 ..."
 
 msgid "... refers to relation"
 msgstr ""
@@ -2729,7 +2734,7 @@ msgid "Cycling dependencies"
 msgstr "순환참조"
 
 msgid "Uploading modified notes"
-msgstr ""
+msgstr "수정된 참고 업로드 중"
 
 msgid "Note {0} failed: {1}"
 msgstr ""
@@ -2745,75 +2750,74 @@ msgid ""
 msgstr ""
 
 msgid "Errors"
-msgstr ""
+msgstr "오류"
 
 msgid "Usually this should be fixed."
-msgstr ""
+msgstr "보통 이를 수정해야 합니다."
 
 msgid "Warnings"
-msgstr ""
+msgstr "경고"
 
 msgid "Fix these when possible."
-msgstr ""
+msgstr "가능한 고쳐야 합니다."
 
 msgid "Other"
-msgstr ""
+msgstr "기타"
 
 msgid "Informational warnings, expect many false entries."
 msgstr ""
 
 msgid "Suspicious data found. Upload anyway?"
-msgstr ""
+msgstr "의심스러운 데이터가 발견되었습니다. 그래도 업로드하시겠습니까?"
 
 msgid "Continue upload"
-msgstr ""
+msgstr "계속 업로드"
 
 msgid "Add node {0}"
-msgstr "node {0} 추가"
+msgstr "점 {0} 추가"
 
 msgid "Add way {0}"
-msgstr "way {0} 추가"
+msgstr "선 {0} 추가"
 
 msgid "Add relation {0}"
-msgstr "relation {0} 추가"
+msgstr "관계 {0} 추가"
 
 msgid "Added {0} object"
 msgid_plural "Added {0} objects"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "개체 {0}개 추가"
 
 msgid "New way {0} has 0 nodes"
 msgstr ""
 
 msgid "Change node {0}"
-msgstr "node {0} 변경"
+msgstr "점 {0} 변경"
 
 msgid "Change way {0}"
-msgstr "way {0} 변경"
+msgstr "선 {0} 변경"
 
 msgid "Change relation {0}"
-msgstr "relation {0} 변경"
+msgstr "관계 {0} 변경"
 
 msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
-msgstr "node ''{1}''의 \"{0}\" 제거"
+msgstr "점 ''{1}''의 \"{0}\" 제거"
 
 msgid "Remove \"{0}\" for way ''{1}''"
-msgstr "way ''{1}''의 \"{0}\" 제거"
+msgstr "선 ''{1}''의 \"{0}\" 제거"
 
 msgid "Remove \"{0}\" for relation ''{1}''"
-msgstr "relation ''{1}''의 \"{0}\" 제거"
+msgstr "관계 ''{1}''의 \"{0}\" 제거"
 
 msgid "Set {0}={1} for node ''{2}''"
-msgstr "node ''{2}''의 {0}을 {1}로 세트"
+msgstr "점 ''{2}''에 태그 {0}={1} 입력"
 
 msgid "Set {0}={1} for way ''{2}''"
-msgstr "way ''{2}''의 {0}을 {1}로 세트"
+msgstr "선 ''{2}''에 태그 {0}={1} 입력"
 
 msgid "Set {0}={1} for relation ''{2}''"
-msgstr "relation ''{2}''의 {0}을 {1}로 세트"
+msgstr "관계 ''{2}''에 태그 {0}={1} 입력"
 
 msgid "Remove \"{0}\" for {1} object"
 msgid_plural "Remove \"{0}\" for {1} objects"
@@ -2822,8 +2826,7 @@ msgstr[1] ""
 
 msgid "Set {0}={1} for {2} object"
 msgid_plural "Set {0}={1} for {2} objects"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "개체 ''{2}''개에 태그 {0}={1} 입력"
 
 msgid "Deleted {0} tags for {1} object"
 msgid_plural "Deleted {0} tags for {1} objects"
@@ -2832,49 +2835,48 @@ msgstr[1] ""
 
 msgid "Set {0} tags for {1} object"
 msgid_plural "Set {0} tags for {1} objects"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "개체 ''{1}''개에 태그 {0} 입력"
 
 msgid "Replace \"{0}\" by \"{1}\" for"
 msgstr ""
 
 msgid "object"
 msgid_plural "objects"
-msgstr[0] "대상"
+msgstr[0] "개체"
 
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
 msgid "Deleted ''{0}''"
-msgstr ""
+msgstr "''{0}'' 삭제"
 
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
 msgid "Delete node {0}"
-msgstr ""
+msgstr "점 {0} 삭제"
 
 msgid "Delete way {0}"
-msgstr ""
+msgstr "선 {0} 삭제"
 
 msgid "Delete relation {0}"
-msgstr ""
+msgstr "관계 {0} 삭제"
 
 msgid "Delete {0} object"
 msgid_plural "Delete {0} objects"
-msgstr[0] "{0} 객체 삭제"
+msgstr[0] "개체 {0}개 삭제"
 
 msgid "Delete {0} node"
 msgid_plural "Delete {0} nodes"
-msgstr[0] "{0} node 삭제"
+msgstr[0] "점 {0} 삭제"
 
 msgid "Delete {0} way"
 msgid_plural "Delete {0} ways"
-msgstr[0] "{0} way 삭제"
+msgstr[0] "선 {0} 삭제"
 
 msgid "Delete {0} relation"
 msgid_plural "Delete {0} relations"
-msgstr[0] "{0} relation 삭제"
+msgstr[0] "관계 {0} 삭제"
 
 msgid "Delete confirmation"
 msgstr "삭제 확인"
@@ -2884,6 +2886,8 @@ msgid ""
 "downloaded.<br>This can cause problems because other objects (that you do "
 "not see) might use them.<br>Do you really want to delete?"
 msgstr ""
+"다운로드된 지역 바깥에 있는 점을 삭제하려고 합니다.<br>다른 개체(볼 수 없음)가 사용할 수 있으므로 문제가 발생할 수 "
+"있습니다.<br>정말 떼어내시겠습니까?"
 
 msgid ""
 "You are about to delete incomplete objects.<br>This will cause problems "
@@ -2902,28 +2906,26 @@ msgstr[0] ""
 msgstr[1] ""
 
 msgid "Delete relation?"
-msgstr ""
+msgstr "관계 삭제"
 
 msgid "Move {0} node"
 msgid_plural "Move {0} nodes"
-msgstr[0] "{0} node 이동"
+msgstr[0] "점 {0}개 이동"
 
 msgid "Purged {0} object"
 msgid_plural "Purged {0} objects"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "개체 {0}개 지우기"
 
 msgid "Removed nodes from {0}"
 msgstr ""
 
 msgid "Rotate {0} node"
 msgid_plural "Rotate {0} nodes"
-msgstr[0] "{0} node를 회전"
+msgstr[0] "점 {0}개 회전"
 
 msgid "Scale {0} node"
 msgid_plural "Scale {0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "점 {0} 크기 조절"
 
 msgid "Selected {0} object"
 msgid_plural "Selected {0} objects"
@@ -2931,7 +2933,7 @@ msgstr[0] ""
 msgstr[1] ""
 
 msgid "Sequence: {0}"
-msgstr ""
+msgstr "열: {0}"
 
 msgid "Transform {0} node"
 msgid_plural "Transform {0} nodes"
@@ -2959,7 +2961,7 @@ msgid ""
 msgstr ""
 
 msgid "Resolve conflicts in coordinates in {0}"
-msgstr "{0}의 좌표에 있는 충돌 해소"
+msgstr "{0}의 좌표에 있는 충돌 해결"
 
 msgid "Cannot resolve undecided conflict."
 msgstr ""
@@ -2977,7 +2979,7 @@ msgid "Set the ''modified'' flag for relation {0}"
 msgstr ""
 
 msgid "Resolve conflicts in member list of relation {0}"
-msgstr "relation {0}의 맴버 리스트에서 충돌 해결"
+msgstr "관계 {0}의 구성원 목록에서 충돌 해결"
 
 msgid "Resolve {0} tag conflict in node {1}"
 msgid_plural "Resolve {0} tag conflicts in node {1}"
@@ -3004,7 +3006,7 @@ msgid "Resolve version conflict for relation {0}"
 msgstr ""
 
 msgid "Resolve conflicts in node list of way {0}"
-msgstr "way {0}의 node 리스트 충돌 해결"
+msgstr "선 {0}의 점 목록에서 충돌 해결"
 
 msgid "Main dataset does not include node {0}"
 msgstr ""
@@ -3044,7 +3046,7 @@ msgid "Roles in relations referring to"
 msgstr ""
 
 msgid "Automatic tag correction"
-msgstr "자동 tag 교정"
+msgstr "자동 태그 교정"
 
 msgid "Unable to create directory {0}, autosave will be disabled"
 msgstr ""
@@ -3059,7 +3061,7 @@ msgid "Unable to delete old backup file {0}"
 msgstr ""
 
 msgid "Your work has been saved automatically."
-msgstr ""
+msgstr "작업물이 자동으로 저장되었습니다."
 
 msgid "Restoring files"
 msgstr ""
@@ -3187,16 +3189,16 @@ msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
 msgid "Metric"
-msgstr ""
+msgstr "미터법"
 
 msgid "Chinese"
-msgstr ""
+msgstr "중국식 도량형"
 
 msgid "Imperial"
-msgstr ""
+msgstr "야드법"
 
 msgid "Nautical Mile"
-msgstr ""
+msgstr "노티컬 마일"
 
 msgid "UNKNOWN"
 msgstr "알 수 없음"
@@ -3217,7 +3219,7 @@ msgid "Decimal Degrees"
 msgstr ""
 
 msgid "deg° min'' sec\""
-msgstr ""
+msgstr "도° 분'' 초\""
 
 msgid "deg° min'' (Nautical)"
 msgstr ""
@@ -3242,7 +3244,7 @@ msgid "E"
 msgstr ""
 
 msgid "Date of imagery: {0}"
-msgstr ""
+msgstr "사진의 날짜: {0}"
 
 msgid "This imagery is marked as best in this region in other editors."
 msgstr ""
@@ -3257,10 +3259,10 @@ msgid "Update default entries"
 msgstr ""
 
 msgid "Update imagery ''{0}''"
-msgstr ""
+msgstr "사진 ''{0}'' 업데이트"
 
 msgid "Drop old imagery ''{0}''"
-msgstr ""
+msgstr "오래된 사진 ''{0}'' 버리기"
 
 msgid "Projection ''{0}'' is not found, bookmark ''{1}'' is not usable"
 msgstr ""
@@ -3304,7 +3306,7 @@ msgid ""
 msgstr ""
 
 msgid "Note"
-msgstr ""
+msgstr "참고"
 
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
@@ -3376,16 +3378,15 @@ msgstr ""
 
 msgid "node"
 msgid_plural "nodes"
-msgstr[0] "노드"
+msgstr[0] "점"
 
 msgid "way"
 msgid_plural "ways"
-msgstr[0] "길"
+msgstr[0] "선"
 
 msgid "relation"
 msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "관계"
 
 msgid "closedway"
 msgstr ""
@@ -3399,7 +3400,7 @@ msgid ""
 msgstr ""
 
 msgid "<anonymous>"
-msgstr ""
+msgstr "<익명>"
 
 msgid "Cannot add node {0} to incomplete way {1}."
 msgstr ""
@@ -3602,7 +3603,7 @@ msgid "Lat/lon (Geodetic)"
 msgstr ""
 
 msgid "Mercator"
-msgstr ""
+msgstr "메르카토르 도법"
 
 msgid "Oblique Mercator"
 msgstr ""
@@ -3682,7 +3683,7 @@ msgid "URL validator"
 msgstr ""
 
 msgid "Addresses"
-msgstr ""
+msgstr "주소"
 
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
@@ -3728,7 +3729,7 @@ msgid "Barrier entrance not set on a barrier"
 msgstr ""
 
 msgid "Coastlines"
-msgstr ""
+msgstr "해안선"
 
 msgid "This test checks that coastlines are correct."
 msgstr ""
@@ -4521,7 +4522,7 @@ msgid "Do not show again (remembers choice)"
 msgstr ""
 
 msgid "incomplete"
-msgstr ""
+msgstr "다운로드되지 않음"
 
 msgid "House {0}"
 msgstr ""
@@ -4616,10 +4617,10 @@ msgstr "알수 없는 호스트"
 
 msgid "Object deleted"
 msgid_plural "Objects deleted"
-msgstr[0] "오브젝트가 삭제됨"
+msgstr[0] "개체가 삭제됨"
 
 msgid "Show help information"
-msgstr ""
+msgstr "도움말 보기"
 
 msgid "Downloading \"Message of the day\""
 msgstr ""
@@ -4634,15 +4635,15 @@ msgid "Click to close the dialog"
 msgstr ""
 
 msgid "Imagery offset"
-msgstr ""
+msgstr "사진 오프셋"
 
 msgctxt "menu"
 msgid "Imagery"
-msgstr ""
+msgstr "사진"
 
 msgctxt "layer"
 msgid "Offset"
-msgstr ""
+msgstr "오프셋"
 
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
@@ -4705,7 +4706,7 @@ msgid "Disable access to the given resource(s), separated by comma"
 msgstr ""
 
 msgid "options provided as Java system properties"
-msgstr ""
+msgstr "Java 시스템 속성으로 제공된 옵션"
 
 msgid "Change the JOSM directory name"
 msgstr ""
@@ -4750,6 +4751,8 @@ msgid ""
 "      Java option to specify the maximum size of allocated memory in "
 "megabytes"
 msgstr ""
+"참고: 일부 작업을 위해, JOSM은 많은 메모리가 필요합니다. 할당된 메모리의 최대 크기를\n"
+"      메가바이트로 지정하려면 다음 Java 옵션을 추가할 필요가 있을 수 있습니다"
 
 msgid "examples"
 msgstr ""
@@ -4858,19 +4861,19 @@ msgstr ""
 
 msgctxt "menu"
 msgid "File"
-msgstr ""
+msgstr "파일"
 
 msgctxt "menu"
 msgid "Edit"
-msgstr ""
+msgstr "편집"
 
 msgctxt "menu"
 msgid "View"
-msgstr ""
+msgstr "보기"
 
 msgctxt "menu"
 msgid "Tools"
-msgstr ""
+msgstr "도구"
 
 msgctxt "menu"
 msgid "More tools"
@@ -4878,7 +4881,7 @@ msgstr ""
 
 msgctxt "menu"
 msgid "Data"
-msgstr ""
+msgstr "데이터"
 
 msgctxt "menu"
 msgid "Selection"
@@ -4886,7 +4889,7 @@ msgstr ""
 
 msgctxt "menu"
 msgid "Presets"
-msgstr ""
+msgstr "프리셋"
 
 msgid "More..."
 msgstr ""
@@ -4897,55 +4900,55 @@ msgstr ""
 
 msgctxt "menu"
 msgid "Windows"
-msgstr ""
+msgstr "창"
 
 msgctxt "menu"
 msgid "Help"
-msgstr ""
+msgstr "도움말"
 
 msgid "Menu: {0}"
-msgstr ""
+msgstr "메뉴: {0}"
 
 msgid "Main toolbar"
-msgstr ""
+msgstr "상단 도구 모음"
 
 msgid ""
 "Toggles the visibility of the main toolbar (i.e., the horizontal toolbar)"
 msgstr ""
 
 msgid "Edit toolbar"
-msgstr ""
+msgstr "편집 도구 모음"
 
 msgid "Toggles the visibility of the edit toolbar (i.e., the vertical tool)"
 msgstr ""
 
 msgid "Preset preferences"
-msgstr ""
+msgstr "프리셋 환경 설정"
 
 msgid "Click to open the tagging presets tab in the preferences"
 msgstr ""
 
 msgid "Imagery preferences"
-msgstr ""
+msgstr "사진 환경 설정"
 
 msgid "Click to open the imagery tab in the preferences"
 msgstr ""
 
 msgctxt "menu"
 msgid "Audio"
-msgstr ""
+msgstr "오디오"
 
 msgid "Do not hide toolbar"
 msgstr ""
 
 msgid "Hide this button"
-msgstr ""
+msgstr "이 버튼 숨기기"
 
 msgid "Click the arrow at the bottom to show it again."
 msgstr ""
 
 msgid "Hide edit toolbar"
-msgstr ""
+msgstr "편집 도구 모음 숨김"
 
 msgid "Hide or show this toggle button"
 msgstr ""
@@ -4966,10 +4969,10 @@ msgid "Move down"
 msgstr ""
 
 msgid "Zoom in"
-msgstr ""
+msgstr "확대"
 
 msgid "Zoom out"
-msgstr ""
+msgstr "축소"
 
 msgid "scale"
 msgstr ""
@@ -4987,7 +4990,7 @@ msgid "Status bar foreground: active"
 msgstr ""
 
 msgid "{0} ({1})"
-msgstr ""
+msgstr "{0} ({1})"
 
 msgid "The (compass) heading of the line segment being drawn."
 msgstr ""
@@ -5010,7 +5013,7 @@ msgid "(no object)"
 msgstr ""
 
 msgid "User:"
-msgstr ""
+msgstr "사용자:"
 
 msgid "Do not hide status bar"
 msgstr ""
@@ -5031,16 +5034,16 @@ msgid "System of measurement changed to {0}"
 msgstr ""
 
 msgid "Default (open, closed, new)"
-msgstr ""
+msgstr "기본 (열림, 마감, 신규)"
 
 msgid "Username"
 msgstr "사용자 이름"
 
 msgid "Created date"
-msgstr ""
+msgstr "생성된 일자"
 
 msgid "Last change date"
-msgstr ""
+msgstr "마지막으로 바뀐 일자"
 
 msgid "Select note sorting method"
 msgstr ""
@@ -5055,7 +5058,7 @@ msgid "Click to run job in background"
 msgstr ""
 
 msgid " ({0})"
-msgstr ""
+msgstr " ({0})"
 
 msgid "Enlarge"
 msgstr ""
@@ -5069,13 +5072,13 @@ msgid ""
 msgstr ""
 
 msgid "Zoom level:"
-msgstr ""
+msgstr "배율:"
 
 msgid "from tile"
-msgstr ""
+msgstr "타일에서"
 
 msgid "up to tile"
-msgstr ""
+msgstr "타일까지"
 
 msgid ""
 "<html>Alternatively you may enter a <strong>tile address</strong> for a "
@@ -5085,13 +5088,13 @@ msgid ""
 msgstr ""
 
 msgid "Tile address:"
-msgstr ""
+msgstr "타일 주소"
 
 msgid "Apply the tile address"
-msgstr ""
+msgstr "타일 주소 적용"
 
 msgid "Please enter a tile address"
-msgstr ""
+msgstr "타일 주소를 입력해 주세요."
 
 msgid "The current value isn''t a valid tile address"
 msgstr ""
@@ -5306,19 +5309,19 @@ msgid "Copy all their elements to the target"
 msgstr ""
 
 msgid "Up"
-msgstr ""
+msgstr "위"
 
 msgid "Move up the selected entries by one position."
 msgstr ""
 
 msgid "Down"
-msgstr ""
+msgstr "아래"
 
 msgid "Move down the selected entries by one position."
 msgstr ""
 
 msgid "Remove"
-msgstr "지우기"
+msgstr "제거"
 
 msgid "Remove the selected entries from the list of merged elements."
 msgstr ""
@@ -5373,13 +5376,13 @@ msgid "Role {0} is not participating in compare pair {1}."
 msgstr ""
 
 msgid "Properties"
-msgstr ""
+msgstr "속성"
 
 msgid "Tags"
-msgstr ""
+msgstr "태그"
 
 msgid "Nodes"
-msgstr ""
+msgstr "점"
 
 msgid "Members"
 msgstr ""
@@ -5437,7 +5440,7 @@ msgid "Conflict Resolution"
 msgstr ""
 
 msgid "Node"
-msgstr ""
+msgstr "점"
 
 msgid "Merged nodes not frozen yet. Cannot build resolution command."
 msgstr ""
@@ -5454,7 +5457,7 @@ msgid "Properties in their dataset, i.e. the server dataset"
 msgstr ""
 
 msgid "Coordinates:"
-msgstr ""
+msgstr "좌표:"
 
 msgid "Deleted State:"
 msgstr ""
@@ -5463,7 +5466,7 @@ msgid "Referenced by:"
 msgstr ""
 
 msgid "(none)"
-msgstr ""
+msgstr "(없음)"
 
 msgid "deleted"
 msgstr "삭제된"
@@ -5511,7 +5514,7 @@ msgid "Cannot apply undecided tag merge item."
 msgstr ""
 
 msgid "Key"
-msgstr "단축키"
+msgstr "키"
 
 msgid "Value"
 msgstr "값"
@@ -5556,7 +5559,7 @@ msgid "Apply resolved conflicts"
 msgstr ""
 
 msgid "Apply"
-msgstr ""
+msgstr "적용"
 
 msgid ""
 "You are about to combine {1} object, which is part of {0} "
@@ -5593,10 +5596,10 @@ msgid "<i>missing</i>"
 msgstr ""
 
 msgid ", "
-msgstr ""
+msgstr ", "
 
 msgid "Choose a value"
-msgstr ""
+msgstr "값 선택"
 
 msgid "none"
 msgstr "없음"
@@ -5642,7 +5645,7 @@ msgid "Conflicts in pasted tags"
 msgstr ""
 
 msgid "Paste ..."
-msgstr ""
+msgstr "붙여넣기..."
 
 msgid "From ..."
 msgstr ""
@@ -5705,7 +5708,7 @@ msgid "<html>Enter a tag key, e.g. <strong><tt>fixme</tt></strong></html>"
 msgstr ""
 
 msgid "Value:"
-msgstr ""
+msgstr "값:"
 
 msgid ""
 "<html>Enter a tag value, e.g. <strong><tt>check members</tt></strong></html>"
@@ -5751,10 +5754,10 @@ msgid "<html>Please select the values to keep for the following tags.</html>"
 msgstr ""
 
 msgid "Apply?"
-msgstr "적용?"
+msgstr ""
 
 msgid "Relation"
-msgstr ""
+msgstr "관계"
 
 msgid "Old role"
 msgstr "예전 규칙"
@@ -5763,27 +5766,27 @@ msgid "New role"
 msgstr "새 규칙"
 
 msgid "Old key"
-msgstr "예전 key"
+msgstr "예전 키"
 
 msgid "Old value"
 msgstr "예전 값"
 
 msgid "New key"
-msgstr "새 key"
+msgstr "새 키"
 
 msgid "New value"
 msgstr "새 값"
 
 msgid "Pasting {0} tag"
 msgid_plural "Pasting {0} tags"
-msgstr[0] "{0}개의 tag를 붙여넣는 중"
+msgstr[0] "{0}개의 태그를 붙여넣는 중"
 
 msgid "to {0} object"
 msgid_plural "to {0} objects"
-msgstr[0] "{0} 오브젝트에"
+msgstr[0] "개체 {0}개로"
 
 msgid "Delete incomplete members?"
-msgstr "완성되지 않은 멤버를 버리겠습니까?"
+msgstr "다운로드되지 않은 구성 요소를 삭제하겠습니까?"
 
 msgid "Paste without incomplete members"
 msgstr ""
@@ -5804,7 +5807,7 @@ msgid ""
 msgstr ""
 
 msgid "Changesets"
-msgstr ""
+msgstr "바뀜집합"
 
 msgid "Open the list of changesets in the current layer."
 msgstr ""
@@ -5823,7 +5826,7 @@ msgid "Closes the selected open changesets"
 msgstr ""
 
 msgid "Show info"
-msgstr ""
+msgstr "정보 보기"
 
 msgid "Open a web page for each selected changeset"
 msgstr ""
@@ -5876,7 +5879,7 @@ msgid "Rel.:{0} / Ways:{1} / Nodes:{2}"
 msgstr ""
 
 msgid "Resolve"
-msgstr "분석"
+msgstr "해결"
 
 msgid "Open a merge dialog of all selected items in the list above."
 msgstr ""
@@ -5902,10 +5905,10 @@ msgid "Click to close this dialog and continue editing"
 msgstr ""
 
 msgid "Conflicts detected"
-msgstr ""
+msgstr "충돌이 감지됨"
 
 msgid "Resolve conflicts"
-msgstr ""
+msgstr "충돌 해결"
 
 msgid "Cancel conflict resolution and close the dialog"
 msgstr ""
@@ -5917,7 +5920,7 @@ msgid "Apply Resolution"
 msgstr ""
 
 msgid "Close anyway"
-msgstr ""
+msgstr "어쨌든 닫기"
 
 msgid "Continue resolving"
 msgstr ""
@@ -5930,6 +5933,9 @@ msgid ""
 "applied.</strong><br>Click <strong>{1}</strong> to return to resolving "
 "conflicts.</html>"
 msgstr ""
+"<html>이 충돌의 차이를 병합하는 것을 마치지 않았습니다.<br>충돌 해결은 모든 차이를 해결하지 않으면 적용되지<br>않을 "
+"것입니다.<br>어쨌든 닫으려면 <strong>{0}</strong>를 클릭하세요.<strong> 이미<br>해결된 차이는 적용되지 않을 "
+"것입니다.</strong><br>충돌을 해결하기 위해 돌아가려면 <strong>{1}</strong>를 클릭하세요.</html>"
 
 msgid "Conflict not resolved completely"
 msgstr ""
@@ -5992,13 +5998,13 @@ msgid "Add"
 msgstr "추가"
 
 msgid "Add filter."
-msgstr ""
+msgstr "필터를 추가합니다."
 
 msgid "Edit filter."
-msgstr ""
+msgstr "필터를 편집합니다."
 
 msgid "Delete filter."
-msgstr ""
+msgstr "필터를 삭제합니다."
 
 msgid "Move filter up."
 msgstr ""
@@ -6007,7 +6013,7 @@ msgid "Move filter down."
 msgstr ""
 
 msgid "Filter Hidden:{0} Disabled:{1}"
-msgstr ""
+msgstr "필터 {0}개 숨겨짐; {1}개 비활성화"
 
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr ""
@@ -6025,7 +6031,7 @@ msgstr ""
 
 msgctxt "filter"
 msgid "Text"
-msgstr ""
+msgstr "텍스트"
 
 msgctxt "filter"
 msgid "I"
@@ -6052,38 +6058,36 @@ msgid "F"
 msgstr ""
 
 msgid "<h2>Filter active</h2>"
-msgstr ""
+msgstr "<h2>필터 활성화</h2>"
 
 msgid "<p><b>{0}</b> object hidden"
 msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "<p>개체 <b>{0}</b>개 숨겨짐"
 
 msgid "<b>{0}</b> object disabled"
 msgid_plural "<b>{0}</b> objects disabled"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "개체 <b>{0}</b>개 비활성화"
 
 msgid "</p><p>Close the filter dialog to see all objects.<p></html>"
-msgstr ""
+msgstr "</p><p>모든 개체를 보려면 필터 대화 상자를 닫으세요.<p></html>"
 
 msgid "not in data set"
 msgstr ""
 
 msgid "Node: "
-msgstr ""
+msgstr "점: "
 
 msgid "Way: "
-msgstr ""
+msgstr "선: "
 
 msgid "Relation: "
-msgstr ""
+msgstr "관계: "
 
 msgid "deleted-on-server"
 msgstr ""
 
 msgid "modified"
-msgstr ""
+msgstr "수정함"
 
 msgid "filtered/hidden"
 msgstr ""
@@ -6098,81 +6102,83 @@ msgid "has direction keys"
 msgstr ""
 
 msgid "State: "
-msgstr ""
+msgstr "상태: "
 
 msgid "Data Set: "
-msgstr ""
+msgstr "데이터 집합: "
 
 msgid "Edited at: "
-msgstr ""
+msgstr "편집한 일시: "
 
 msgid "<new object>"
-msgstr ""
+msgstr "<새 개체>"
 
 msgid "Edited by: "
-msgstr ""
+msgstr "편집한 사용자: "
 
 msgid "Version: "
-msgstr ""
+msgstr "버전: "
 
 msgid "In changeset: "
-msgstr ""
+msgstr "바뀜집합 ID: "
 
 msgid "Tags: "
-msgstr ""
+msgstr "태그: "
 
 msgid "Centroid: "
-msgstr ""
+msgstr "중심: "
 
 msgid "{0} Member: "
 msgid_plural "{0} Members: "
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "구성 요소 {0}개: "
 
 msgid " as \"{0}\""
 msgstr ""
 
 msgid "{0} Nodes: "
-msgstr ""
+msgstr "점 {0}개: "
 
 msgid "Bounding box: "
-msgstr ""
+msgstr "바운딩 박스: "
 
 msgid "Bounding box (projected): "
 msgstr ""
 
 msgid "Center of bounding box: "
-msgstr ""
+msgstr "바운딩 박스의 중심: "
 
 msgid "Coordinates: "
-msgstr ""
+msgstr "좌표: "
 
 msgid "Coordinates (projected): "
 msgstr ""
 
 msgid "Part of: "
-msgstr ""
+msgstr "다음의 일부: "
 
 msgid "In conflict with: "
 msgstr ""
 
 msgid "Advanced object info"
-msgstr ""
+msgstr "고급 개체 정보"
 
 msgid "map style"
-msgstr ""
+msgstr "지도 스타일"
 
 msgid "edit counts"
-msgstr ""
+msgstr "편집 계수"
 
 msgid "Styles Cache for \"{0}\":"
-msgstr ""
+msgstr "\"{0}\"의 스타일 캐시:"
 
 msgid ""
 "\n"
 "\n"
 "> applying {0} style \"{1}\"\n"
 msgstr ""
+"\n"
+"\n"
+"> {0} 스타일 \"{1}\" 적용\n"
 
 msgid ""
 "\n"
@@ -6184,12 +6190,18 @@ msgid ""
 "\n"
 "> skipping \"{0}\" (not active)"
 msgstr ""
+"\n"
+"\n"
+"> \"{0}\" 건너뜀 (비활성화)"
 
 msgid ""
 "\n"
 "\n"
 "List of generated Styles:\n"
 msgstr ""
+"\n"
+"\n"
+"생성된 스타일 목록:\n"
 
 msgid "The 2 selected objects have identical style caches."
 msgstr ""
@@ -6203,58 +6215,61 @@ msgstr ""
 
 msgid "{0} user last edited the selection:"
 msgid_plural "{0} users last edited the selection:"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "선택한 것을 마지막으로 편집한 사용자 {0}명:"
 
 msgid "mapcss"
-msgstr ""
+msgstr "지도 css"
 
 msgid "unknown"
-msgstr "알 수 없는"
+msgstr "알 수 없음"
 
 msgid "Enter the coordinates for the new node."
-msgstr ""
+msgstr "새 점의 좌표를 입력하세요."
 
 msgid ""
 "You can separate longitude and latitude with space, comma or semicolon."
-msgstr ""
+msgstr "스페이스, 쉼표 또는 세미콜론으로 경도와 위도를 구분할 수 있습니다."
 
 msgid ""
 "Use positive numbers or N, E characters to indicate North or East cardinal "
 "direction."
-msgstr ""
+msgstr "북위나 동경은 문자 N, E 또는 양수를 사용합니다."
 
 msgid ""
 "For South and West cardinal directions you can use either negative numbers "
 "or S, W characters."
-msgstr ""
+msgstr "남위나 서경은 문자 S, W 또는 음수를 사용합니다."
 
 msgid "Coordinate value can be in one of three formats:"
-msgstr ""
+msgstr "세 개의 형식 중 하나를 좌표값으로 사용할 수 있습니다."
 
 msgid "<i>degrees</i><tt>°</tt>"
-msgstr ""
+msgstr "도<tt>°</tt>"
 
 msgid "<i>degrees</i><tt>°</tt> <i>minutes</i><tt>'</tt>"
-msgstr ""
+msgstr "도<tt>°</tt> 분<tt>'</tt>"
 
 msgid ""
 "<i>degrees</i><tt>°</tt> <i>minutes</i><tt>'</tt> "
 "<i>seconds</i><tt>&quot</tt>"
-msgstr ""
+msgstr "도<tt>°</tt> 분<tt>'</tt> 초<tt>&quot</tt>"
 
 msgid ""
 "Symbols <tt>°</tt>, <tt>'</tt>, <tt>′</tt>, <tt>"</tt>, "
 "<tt>″</tt> are optional."
 msgstr ""
+"부호 <tt>°</tt>, <tt>'</tt>, <tt>′</tt>, <tt>"</tt>, "
+"<tt>″</tt>는 선택 사항입니다."
 
 msgid ""
 "You can also use the syntax <tt>lat=\"...\" lon=\"...\"</tt> or "
 "<tt>lat=''...'' lon=''...''</tt>."
 msgstr ""
+"구문 <tt>lat=\"...\" lon=\"...\"</tt> 또는 <tt>lat=''...'' lon=''...''</tt>을 "
+"사용해도 됩니다."
 
 msgid "Some examples:"
-msgstr ""
+msgstr "예시:"
 
 msgid "Projected coordinates:"
 msgstr ""
@@ -6264,10 +6279,10 @@ msgid ""
 msgstr ""
 
 msgid "Lat/Lon"
-msgstr ""
+msgstr "위도/경도"
 
 msgid "East/North"
-msgstr ""
+msgstr "동향/북향"
 
 msgid "Please enter a GPS coordinates"
 msgstr ""
@@ -6279,19 +6294,19 @@ msgid "Toggle visibility of layer: {0}"
 msgstr ""
 
 msgid "Open a list of all loaded layers."
-msgstr "로드된 모든 레이어의 리스트 열기"
+msgstr "불러오기된 모든 레이어의 목록을 엽니다."
 
 msgid "layer is currently visible (click to hide layer)"
-msgstr ""
+msgstr "레이어 보임 (레이어를 숨기려면 클릭)"
 
 msgid "layer is currently hidden (click to show layer)"
-msgstr ""
+msgstr "레이어 숨겨짐 (레이어를 보려면 클릭)"
 
 msgid "this layer is the active layer"
-msgstr ""
+msgstr "레이어 활성화"
 
 msgid "this layer is not currently active (click to activate)"
-msgstr ""
+msgstr "현재 활성화 되지 않은 레이어 (활성화하려면 클릭)"
 
 msgid "scale follows native resolution of this layer"
 msgstr ""
@@ -6304,13 +6319,13 @@ msgid "this layer has no native resolution"
 msgstr ""
 
 msgid "Information about layer"
-msgstr ""
+msgstr "레이어에 관한 정보"
 
 msgid "Map paint preferences"
-msgstr ""
+msgstr "지도 페인트 환경 설정"
 
 msgid "Map Paint Styles"
-msgstr ""
+msgstr "지도 페인트 스타일"
 
 msgid "configure the map painting style"
 msgstr ""
@@ -6325,10 +6340,10 @@ msgid "Turn selected styles on or off"
 msgstr ""
 
 msgid "Move the selected entry one row down."
-msgstr ""
+msgstr "선택한 항목을 한 줄 내립니다."
 
 msgid "Move the selected entry one row up."
-msgstr ""
+msgstr "선택한 항목을 한 줄 올립니다."
 
 msgid "Reload from file"
 msgstr ""
@@ -6337,16 +6352,16 @@ msgid "reload selected styles from file"
 msgstr ""
 
 msgid "Save as..."
-msgstr ""
+msgstr "다른 이름으로 저장..."
 
 msgid "Save a copy of this Style to file and add it to the list"
 msgstr ""
 
 msgid "Map paint style file (*.mapcss, *.zip)"
-msgstr ""
+msgstr "지도 페인트 스타일 파일 (*.mapcss, *.zip)"
 
 msgid "Map paint style file (*.xml, *.zip)"
-msgstr ""
+msgstr "지도 페인트 스타일 파일 (*.xml, *.zip)"
 
 msgid "Reloading style sources"
 msgstr ""
@@ -6358,25 +6373,25 @@ msgid "view meta information, error log and source definition"
 msgstr ""
 
 msgid "Map Style info"
-msgstr ""
+msgstr "지도 스타일 정보"
 
 msgid "Source"
-msgstr ""
+msgstr "소스"
 
 msgid "Title:"
-msgstr ""
+msgstr "제목:"
 
 msgid "URL:"
-msgstr ""
+msgstr "URL:"
 
 msgid "Built-in Style, internal path:"
 msgstr ""
 
 msgid "Path:"
-msgstr ""
+msgstr "경로:"
 
 msgid "Icon:"
-msgstr ""
+msgstr "아이콘:"
 
 msgid "Background:"
 msgstr ""
@@ -6385,86 +6400,86 @@ msgid "Style is currently active?"
 msgstr ""
 
 msgid "No"
-msgstr ""
+msgstr "아니오"
 
 msgid "Style settings"
-msgstr ""
+msgstr "스타일 설정"
 
 msgid "Customize the style"
 msgstr ""
 
 msgid "Search menu items"
-msgstr ""
+msgstr "메뉴 항목 찾기"
 
 msgid "Mini map"
-msgstr ""
+msgstr "미니맵"
 
 msgid "Displays a small map of the current edit location"
-msgstr "현재 편집 위치의 작은 지도 표시"
+msgstr "현재 편집 위치의 미니맵 표시"
 
 msgid "List of notes"
-msgstr ""
+msgstr "참고 목록"
 
 msgid "Add comment"
-msgstr ""
+msgstr "댓글 추가"
 
 msgid "Comment"
-msgstr ""
+msgstr "댓글"
 
 msgid "Comment on note"
-msgstr ""
+msgstr "참고에 댓글"
 
 msgid "Add comment to note:"
-msgstr ""
+msgstr "참고에 댓글 추가:"
 
 msgid "Close note"
-msgstr ""
+msgstr "참고 마감"
 
 msgid "Close note with message:"
-msgstr ""
+msgstr "메시지와 함께 참고 마감"
 
 msgid "Create a new note"
-msgstr ""
+msgstr "새 노트 생성"
 
 msgid "Create"
-msgstr ""
+msgstr "생성"
 
 msgid "Reopen note"
-msgstr ""
+msgstr "참고 다시 열기"
 
 msgid "Reopen"
-msgstr ""
+msgstr "다시 열기"
 
 msgid "Reopen note with message:"
-msgstr ""
+msgstr "메시지와 함께 참고 다시 열기"
 
 msgid "Sort notes"
-msgstr ""
+msgstr "참고 정렬"
 
 msgid "Sort"
-msgstr ""
+msgstr "정렬"
 
 msgid "Open the note in an external browser"
-msgstr ""
+msgstr "외부 브라우저로 참고 열기"
 
 msgid "Object type:"
-msgstr "오브젝트 형식:"
+msgstr "개체 유형:"
 
 msgctxt "osm object types"
 msgid "mixed"
 msgstr "혼합"
 
 msgid "Choose the OSM object type"
-msgstr "OSM 오브젝트 형식을 선택하세요."
+msgstr "OSM 개체 유형을 선택하세요."
 
 msgid "Object ID:"
-msgstr "오브젝트 ID:"
+msgstr "개체 ID:"
 
 msgid "Enter the ID of the object that should be downloaded"
-msgstr "다운로드 해야 할 오브젝트 ID를 입력하세요"
+msgstr "다운로드해야 할 개체 ID를 입력하세요."
 
 msgid "Object IDs can be separated by comma or space, for instance: {0}"
-msgstr ""
+msgstr "개체 ID를 쉼표, 스페이스로 구분할 수 있습니다. 예를 들어: {0}"
 
 msgid ""
 "In mixed mode, specify objects like this: {0}<br/>({1} stands for "
@@ -6472,24 +6487,26 @@ msgid ""
 msgstr ""
 
 msgid "Ranges of object IDs are specified with a hyphen, for instance: {0}"
-msgstr ""
+msgstr "개체 ID의 범위는 하이픈으로 지정됩니다. 예를 들어: {0}"
 
 msgid ""
 "Invalid ID list specified\n"
 "Cannot continue."
 msgstr ""
+"잘못된 ID 목록을 지정하였습니다.\n"
+"계속할 수 없습니다."
 
 msgid "Relations"
-msgstr ""
+msgstr "관계"
 
 msgid "Open a list of all relations."
-msgstr ""
+msgstr "모든 관계의 목록을 엽니다."
 
 msgid "Relation list filter"
-msgstr ""
+msgstr "관계 목록 필터"
 
 msgid "Create a new relation"
-msgstr ""
+msgstr "새 관계를 생성합니다."
 
 msgid "New"
 msgstr "새로 만들기"
@@ -6498,46 +6515,46 @@ msgid "Relations: {0}/{1}"
 msgstr ""
 
 msgid "Relations: {0}"
-msgstr ""
+msgstr "관계: {0}"
 
 msgid "Selection"
 msgstr "선택"
 
 msgid "Open a selection list window."
-msgstr ""
+msgstr "선택 목록 창을 엽니다."
 
 msgid "Current Selection"
 msgstr ""
 
 msgid "Search for objects"
-msgstr ""
+msgstr "개체 찾기"
 
 msgid "Display the history of the selected objects."
 msgstr "선택된 개체의 역사를 표시합니다."
 
 msgid "Zoom to selection"
-msgstr ""
+msgstr "선택한 것으로 이동"
 
 msgid "Zoom to selected element(s)"
-msgstr ""
+msgstr "선택한 요소로 이동"
 
 msgid "Sel.: Rel.:{0} / Ways:{1} / Nodes:{2}"
-msgstr ""
+msgstr "선택: 관계:{0} / 선:{1} / 점:{2}"
 
 msgid "Unselectable now"
 msgstr ""
 
 msgid "Selection: {0}"
-msgstr ""
+msgstr "선택: {0}"
 
 msgid "Always shown"
-msgstr ""
+msgstr "항상 보이기"
 
 msgid "Dynamic"
 msgstr ""
 
 msgid "Always hidden"
-msgstr ""
+msgstr "항상 숨기기"
 
 msgid "Toggle dynamic buttons"
 msgstr ""
@@ -6546,76 +6563,75 @@ msgid "Open preferences for this panel"
 msgstr ""
 
 msgid "Undock the panel"
-msgstr ""
+msgstr "패널 떼어내기"
 
 msgid ""
 "Close this panel. You can reopen it with the buttons in the left toolbar."
-msgstr ""
+msgstr "패널을 닫습니다. 왼쪽 도구 모음의 버튼으로 다시 열 수 있습니다."
 
 msgid "Click to minimize/maximize the panel content"
-msgstr ""
+msgstr "클릭하면 패널 내용을 최소화/최대화합니다."
 
 msgid "Side buttons"
 msgstr ""
 
 msgid "Authors"
-msgstr ""
+msgstr "편집자"
 
 msgid "Open a list of people working on the selected objects."
-msgstr ""
+msgstr "선택한 개체를 편집한 사용자 목록을 엽니다."
 
 msgid "{0} Author"
 msgid_plural "{0} Authors"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "편집자 {0}명"
 
 msgid "Select objects submitted by this user"
-msgstr ""
+msgstr "이 사용자가 편집한 개체 선택"
 
 msgid "Launches a browser with information about the user"
-msgstr ""
+msgstr "이 사용자에 관한 정보를 웹브라우저로 열기"
 
 msgid "Only launching info browsers for the first {0} of {1} selected users"
 msgstr ""
 
 msgid "Author"
-msgstr ""
+msgstr "편집자"
 
 msgid "# Objects"
-msgstr ""
+msgstr "개체 개수"
 
 msgid "Validation Results"
-msgstr ""
+msgstr "유효성 검사 결과"
 
 msgid "Open the validation window."
-msgstr ""
+msgstr "유효성 검사 창을 엽니다."
 
 msgid "Validation results"
-msgstr ""
+msgstr "유효성 검사 결과"
 
 msgid "Lookup"
-msgstr ""
+msgstr "펼치기"
 
 msgid "Looks up the selected primitives in the error list."
 msgstr ""
 
 msgid "Fix"
-msgstr ""
+msgstr "고치기"
 
 msgid "Fix the selected issue."
-msgstr ""
+msgstr "선택한 문제를 고칩니다."
 
 msgid "Ignore the selected issue next time."
 msgstr ""
 
 msgid "Whole group"
-msgstr ""
+msgstr "그룹 전체"
 
 msgid "Single elements"
-msgstr ""
+msgstr "단일 요소"
 
 msgid "Nothing"
-msgstr ""
+msgstr "취소"
 
 msgid "Ignore whole group or individual elements?"
 msgstr ""
@@ -6624,16 +6640,16 @@ msgid "Ignoring elements"
 msgstr ""
 
 msgid "Fixing errors ..."
-msgstr ""
+msgstr "오류 고치는 중..."
 
 msgid "Fixing ({0}/{1}): ''{2}''"
 msgstr ""
 
 msgid "Updating map ..."
-msgstr ""
+msgstr "지도 업데이트 중..."
 
 msgid "anonymous"
-msgstr ""
+msgstr "익명"
 
 msgid "Display the basic properties of the changeset"
 msgstr "바뀜집합의 기본 속성 표시"
@@ -6642,52 +6658,52 @@ msgid "Display the tags of the changeset"
 msgstr "바뀜집합의 태그 표시"
 
 msgid "Content"
-msgstr ""
+msgstr "내용"
 
 msgid "Display the objects created, updated, and deleted by the changeset"
-msgstr "바뀜집합별 만들어지고, 업데이트되고, 삭제된 개체 표시"
+msgstr "생성되고, 업데이트되고, 삭제된 개체 표시"
 
 msgid "Discussion"
-msgstr ""
+msgstr "토론"
 
 msgid "Display the public discussion around this changeset"
-msgstr ""
+msgstr "이 바뀜집합의 공개 토론 표시"
 
 msgid "Changeset Management Dialog"
-msgstr ""
+msgstr "바뀜집합 관리 대화 상자"
 
 msgid "Close the dialog"
-msgstr ""
+msgstr "대화 상자 닫기"
 
 msgid "Query"
-msgstr ""
+msgstr "쿼리"
 
 msgid "Launch the dialog for querying changesets"
-msgstr ""
+msgstr "바뀜집합을 쿼리 하기 위한 대화 상자 실행"
 
 msgid "Remove from cache"
-msgstr ""
+msgstr "캐시에서 제거"
 
 msgid "Remove the selected changesets from the local cache"
-msgstr ""
+msgstr "선택한 바뀜집합을 로컬 캐시에서 제거"
 
 msgid "Close the selected changesets"
 msgstr ""
 
 msgid "Update changeset"
-msgstr ""
+msgstr "바뀜집합 업데이트"
 
 msgid "Updates the selected changesets with current data from the OSM server"
-msgstr ""
+msgstr "선택한 바뀜집합의 현재 데이터를 OSM 서버로부터 업데이트"
 
 msgid "Download changeset content"
-msgstr ""
+msgstr "바뀜집합 내용 다운로드"
 
 msgid "Download the content of the selected changesets from the server"
-msgstr ""
+msgstr "선택한 바뀜집합의 내용을 서버로부터 다운로드"
 
 msgid "Download changed objects"
-msgstr ""
+msgstr "바뀐 개체 다운로드"
 
 msgid ""
 "Download the current version of the changed objects in the selected "
@@ -6695,20 +6711,22 @@ msgid ""
 msgstr ""
 
 msgid "My changesets"
-msgstr ""
+msgstr "내 바뀜집합"
 
 msgid "Download my changesets from the OSM server (max. 100 changesets)"
-msgstr ""
+msgstr "내 바뀜집합을 OSM 서버로부터 다운로드 (최대 100개)"
 
 msgid ""
 "<html>JOSM is currently running with an anonymous user. It cannot "
 "download<br>your changesets from the OSM server unless you enter your OSM "
 "user name<br>in the JOSM preferences.</html>"
 msgstr ""
+"<html>현재 JOSM이 익명의 사용자로 실행 중입니다.<br>JOSM 환경 설정에 OSM 사용자 이름을 입력하지 않는 한<br>내 "
+"바뀜집합을 OSM 서버로부터 다운로드할 수 없습니다.</html>"
 
 msgctxt "changeset.upload-comment"
 msgid "empty"
-msgstr ""
+msgstr "비었음"
 
 msgctxt "changeset.state"
 msgid "Open"
@@ -6716,25 +6734,25 @@ msgstr ""
 
 msgctxt "changeset.state"
 msgid "Closed"
-msgstr ""
+msgstr "마감"
 
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgid "Open"
 msgstr ""
 
 msgid "User"
-msgstr ""
+msgstr "사용자"
 
 msgid "Created at"
-msgstr ""
+msgstr "생성한 일시"
 
 msgid "Closed at"
-msgstr ""
+msgstr "마감된 일시"
 
 msgid "Discussions"
-msgstr ""
+msgstr "토론"
 
 msgid ""
 "<html>The selected object is not available in the current<br>edit layer "
@@ -6746,16 +6764,16 @@ msgstr[0] ""
 msgstr[1] ""
 
 msgid "Download and show the history of the selected objects"
-msgstr ""
+msgstr "선택한 개체의 역사 다운로드 및 보기"
 
 msgid "Download objects"
-msgstr ""
+msgstr "개체 다운로드"
 
 msgid "Download the current version of the selected objects"
-msgstr ""
+msgstr "선택한 개체의 현재 버전 다운로드"
 
 msgid "Select in layer"
-msgstr ""
+msgstr "레이어에서 선택"
 
 msgid "Select the corresponding primitives in the current data layer"
 msgstr ""
@@ -6773,22 +6791,22 @@ msgid "Nothing to zoom to"
 msgstr ""
 
 msgid "The content of this changeset is not downloaded yet."
-msgstr ""
+msgstr "이 바뀜집합의 내용은 아직 다운로드되지 않았습니다."
 
 msgid "Download now"
-msgstr ""
+msgstr "지금 다운로드"
 
 msgid "Download the changeset content"
-msgstr ""
+msgstr "바뀜집합 내용 다운로드"
 
 msgid "Created"
-msgstr ""
+msgstr "생성"
 
 msgid "Updated"
-msgstr ""
+msgstr "업데이트"
 
 msgid "Deleted"
-msgstr ""
+msgstr "삭제"
 
 msgid "Name"
 msgstr "이름"
@@ -6797,25 +6815,25 @@ msgid "ID:"
 msgstr ""
 
 msgid "Comment:"
-msgstr ""
+msgstr "설명:"
 
 msgid "Open/Closed:"
 msgstr ""
 
 msgid "Created by:"
-msgstr ""
+msgstr "생성한 사용자:"
 
 msgid "Created on:"
-msgstr ""
+msgstr "생성한 일시:"
 
 msgid "Closed on:"
-msgstr ""
+msgstr "마감된 일시:"
 
 msgid "Remove the changeset in the detail view panel from the local cache"
 msgstr ""
 
 msgid "Update the changeset from the OSM server"
-msgstr ""
+msgstr "OSM 서버로부터 바뀜집합 업데이트"
 
 msgid ""
 "Select the primitives in the content of this changeset in the current data "
@@ -6842,7 +6860,7 @@ msgid "Date"
 msgstr ""
 
 msgid "{0} [incomplete]"
-msgstr ""
+msgstr "{0} [다운로드되지 않음]"
 
 msgid "open"
 msgstr ""
@@ -6857,23 +6875,23 @@ msgid "Download the changeset content from the OSM server"
 msgstr ""
 
 msgid "Update content"
-msgstr ""
+msgstr "내용 업데이트"
 
 msgid "Update the changeset content from the OSM server"
-msgstr ""
+msgstr "바뀜집합 내용을 OSM 서버로부터 업데이트"
 
 msgid "Changeset ID: "
-msgstr ""
+msgstr "바뀜집합 ID: "
 
 msgid "Enter a changeset id"
-msgstr ""
+msgstr "바뀜집합 ID 입력"
 
 msgid ""
 "Download the changeset with the specified id, including the changeset content"
 msgstr ""
 
 msgid "Select changesets owned by specific users"
-msgstr ""
+msgstr "특정 사용자가 생성한 바뀜집합 선택"
 
 msgid "Select changesets depending on whether they are open or closed"
 msgstr ""
@@ -6883,7 +6901,7 @@ msgid ""
 msgstr ""
 
 msgid "Select only changesets related to a specific bounding box"
-msgstr ""
+msgstr "특정 바운딩 박스에 관련된 바뀜집합만 선택"
 
 msgid ""
 "Cannot restrict the changeset query to a specific bounding box. The input is "
@@ -6896,10 +6914,10 @@ msgid ""
 msgstr ""
 
 msgid "Invalid bounding box"
-msgstr ""
+msgstr "잘못된 바운딩 박스"
 
 msgid "Download my changesets only"
-msgstr ""
+msgstr "내 바뀜집합만 다운로드"
 
 msgid ""
 "<html>Select to restrict the query to your changesets only.<br>Unselect to "
@@ -6914,7 +6932,7 @@ msgid ""
 msgstr ""
 
 msgid "<html>Download the latest changesets</html>"
-msgstr ""
+msgstr "<html>최근 바뀜집합 다운로드</html>"
 
 msgid ""
 "<html>Download my open changesets<br><em>Disabled. Please enter your OSM "
@@ -6922,7 +6940,7 @@ msgid ""
 msgstr ""
 
 msgid "<html>Download my open changesets</html>"
-msgstr ""
+msgstr "<html>열린 내 바뀜집합 다운로드</html>"
 
 msgid ""
 "<html>Download changesets in the current map view.<br><em>Disabled. There is "
@@ -6930,7 +6948,7 @@ msgid ""
 msgstr ""
 
 msgid "<html>Download changesets in the current map view</html>"
-msgstr ""
+msgstr "<html>현재 지도 보기에서 바뀜집합 다운로드</html>"
 
 msgid ""
 "Unexpected value for preference ''{0}'', got ''{1}''. Resetting to default "
@@ -6941,31 +6959,31 @@ msgid "Cannot create changeset query for open changesets of anonymous user"
 msgstr ""
 
 msgid "Basic"
-msgstr ""
+msgstr "기본"
 
 msgid "Download changesets using predefined queries"
-msgstr ""
+msgstr "사전 정의된 쿼리를 사용하여 바뀜집합 다운로드"
 
 msgid "From URL"
-msgstr ""
+msgstr "URL"
 
 msgid "Query changesets from a server URL"
-msgstr ""
+msgstr "서버 URL로부터 바뀜집합 쿼리"
 
 msgid "Advanced"
-msgstr ""
+msgstr "고급"
 
 msgid "Use a custom changeset query"
 msgstr ""
 
 msgid "Query changesets"
-msgstr ""
+msgstr "바뀜집합 쿼리"
 
 msgid "Query and download changesets"
-msgstr ""
+msgstr "바뀜집합 쿼리 및 다운로드"
 
 msgid "Please enter a valid changeset query URL first."
-msgstr ""
+msgstr "유효한 바뀜집합 쿼리 URL을 먼저 입력해 주세요."
 
 msgid "Illegal changeset query URL"
 msgstr ""
@@ -6979,25 +6997,25 @@ msgid ""
 msgstr ""
 
 msgid "Query open changesets only"
-msgstr ""
+msgstr "열린 바뀜집합만 쿼리"
 
 msgid "Query closed changesets only"
-msgstr ""
+msgstr "마감된 바뀜집합만 쿼리"
 
 msgid "Query both open and closed changesets"
-msgstr ""
+msgstr "열리거나 마감된 바뀜집합 모두 쿼리"
 
 msgid "Date: "
-msgstr ""
+msgstr "일자: "
 
 msgid "Time:"
-msgstr ""
+msgstr "시간:"
 
 msgid "Closed after - "
 msgstr ""
 
 msgid "Date:"
-msgstr ""
+msgstr "일자:"
 
 msgid "Created before - "
 msgstr ""
@@ -7019,7 +7037,7 @@ msgid ""
 msgstr ""
 
 msgid "Invalid date/time values"
-msgstr ""
+msgstr "잘못된 일시값"
 
 msgid ""
 "Please enter a valid time in the usual format for your locale.<br>Example: "
@@ -7028,19 +7046,19 @@ msgstr ""
 
 msgid ""
 "The current value is not a valid user ID. Please enter an integer value > 0"
-msgstr ""
+msgstr "사용자 ID값이 유효하지 않습니다. 0 보다 큰 정수값을 입력해 주세요."
 
 msgid "Please enter an integer value > 0"
-msgstr ""
+msgstr "0 보다 큰 정수값을 입력해 주세요."
 
 msgid "URL: "
-msgstr ""
+msgstr "URL: "
 
 msgid "Please enter or paste an URL to retrieve changesets from the OSM API."
 msgstr ""
 
 msgid "Examples"
-msgstr ""
+msgstr "예시"
 
 msgid ""
 "Note that changeset queries are currently always submitted to ''{0}'', "
@@ -7048,16 +7066,16 @@ msgid ""
 msgstr ""
 
 msgid "This changeset query URL is invalid"
-msgstr ""
+msgstr "잘못된 바뀜집합 쿼리 URL"
 
 msgid "Only changesets owned by myself"
 msgstr ""
 
 msgid "User ID:"
-msgstr ""
+msgstr "사용자 ID:"
 
 msgid "User name:"
-msgstr ""
+msgstr "사용자 이름:"
 
 msgid "Only changesets owned by the user with the following user ID"
 msgstr ""
@@ -7082,76 +7100,76 @@ msgid "Cannot restrict the changeset query to the user name ''{0}''"
 msgstr ""
 
 msgid "Please enter a valid user ID"
-msgstr ""
+msgstr "유효한 사용자 ID를 입력해 주세요."
 
 msgid "Invalid user ID"
-msgstr ""
+msgstr "잘못된 사용자 ID"
 
 msgid "Please enter a non-empty user name"
-msgstr ""
+msgstr "사용자 이름을 입력해 주세요."
 
 msgid "Invalid user name"
-msgstr ""
+msgstr "잘못된 사용자 이름"
 
 msgid "Activate"
-msgstr ""
+msgstr "활성화"
 
 msgid "Activate the selected layer"
-msgstr ""
+msgstr "선택한 레이어 활성화"
 
 msgid "Activate layer"
-msgstr ""
+msgstr "레이어 활성화"
 
 msgid "Delete the selected layers."
-msgstr ""
+msgstr "선택한 레이어 삭제"
 
 msgid "Duplicate this layer"
-msgstr ""
+msgstr "이 레이어 복제"
 
 msgid "Copy of {0}"
-msgstr ""
+msgstr "{0}의 사본"
 
 msgid "Copy {1} of {0}"
-msgstr ""
+msgstr "{0}의 사본 {1}"
 
 msgid "Change visibility of the selected layer."
-msgstr ""
+msgstr "선택한 레이어 가시도 변경"
 
 msgid "Show layer"
-msgstr ""
+msgstr "레이어 표시"
 
 msgid "Adjust opacity of the layer."
-msgstr ""
+msgstr "레이어 불투명도 조정"
 
 msgid "Opacity"
-msgstr ""
+msgstr "불투명도"
 
 msgid "Adjust gamma value of the layer."
-msgstr ""
+msgstr "레이어 감마값 조정"
 
 msgid "Gamma"
-msgstr ""
+msgstr "감마"
 
 msgid "Adjust sharpness/blur value of the layer."
-msgstr ""
+msgstr "레이어 선명도 조정"
 
 msgid "Sharpness"
-msgstr ""
+msgstr "선명도"
 
 msgid "Adjust colorfulness of the layer."
-msgstr ""
+msgstr "레이어 채도 조정"
 
 msgid "Colorfulness"
-msgstr ""
+msgstr "채도"
 
 msgid "Merge this layer into another layer"
-msgstr ""
+msgstr "이 레이어를 다른 레이어로 병합"
 
 msgid "Move the selected layer one row down."
-msgstr "선택된 레이어 한줄 아래로 이동"
+msgstr "선택한 레이어를 한 줄 아래로 이동"
 
 msgid "Move the selected layer one row up."
-msgstr "선택된 레이어 한줄 위로 이동"
+msgstr "선택한 레이어를 한 줄 위로 이동"
 
 msgid "Show/hide"
 msgstr ""
@@ -7175,23 +7193,21 @@ msgid "Discardable key: background"
 msgstr ""
 
 msgid "{0} ''{1}''"
-msgstr ""
+msgstr "''{1}'' {0}개"
 
 msgid "{0} different"
 msgid_plural "{0} different"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "차이점 {0}개"
 
 msgid ", {0} unset"
 msgid_plural ", {0} unset"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] ", 미지정 {0}개"
 
 msgid "Select objects for which to change tags."
 msgstr ""
 
 msgid "Tags/Memberships"
-msgstr ""
+msgstr "태그/구성원"
 
 msgid "Tags for selected objects."
 msgstr ""
@@ -7203,85 +7219,85 @@ msgid "Member Of"
 msgstr ""
 
 msgid "Position"
-msgstr ""
+msgstr "순서"
 
 msgid "Tag filter"
-msgstr ""
+msgstr "태그 필터"
 
 msgid "Objects: {2} / Tags: {0} / Memberships: {1}"
-msgstr ""
+msgstr "개체: {2} / 태그: {0} / 구성원: {1}"
 
 msgid "Tags: {0} / Memberships: {1}"
-msgstr ""
+msgstr "태그: {0} / 구성원: {1}"
 
 msgid "Delete the selected key in all objects"
-msgstr "모든 대상에서 선택된 key 지우기"
+msgstr "선택한 키를 모든 개체에서 삭제"
 
 msgid "Delete Tags"
-msgstr ""
+msgstr "태그 삭제"
 
 msgid "Change relation"
 msgstr ""
 
 msgid "Delete from relation"
-msgstr "relation에서 삭제"
+msgstr "관계에서 삭제"
 
 msgid "Really delete selection from relation {0}?"
 msgstr ""
 
 msgid "Add a new key/value pair to all objects"
-msgstr ""
+msgstr "모든 개체에 새 키/값 추가"
 
 msgid "Add Tag"
 msgstr "태그 추가"
 
 msgid "Edit the value of the selected key for all objects"
-msgstr ""
+msgstr "모든 개체에서 선택한 키의 값 편집"
 
 msgid "Edit Tags"
-msgstr ""
+msgstr "태그 편집"
 
 msgid "Go to OSM wiki for tag help"
-msgstr ""
+msgstr "태그 도움말(OSM 위키)"
 
 msgid "Launch browser with wiki help for selected object"
-msgstr ""
+msgstr "선택한 개체에 대한 도움말을 웹브라우저로 열기"
 
 msgid "Go to Taginfo"
-msgstr ""
+msgstr "Taginfo"
 
 msgid "Launch browser with Taginfo statistics for selected object"
-msgstr ""
+msgstr "선택한 개체에 대한 Taginfo 통계를 웹브라우저로 열기"
 
 msgid "Paste Value"
-msgstr ""
+msgstr "값 붙여넣기"
 
 msgid "Paste the value of the selected tag from clipboard"
-msgstr ""
+msgstr "선택한 태그의 값에 클립보드를 붙여넣기"
 
 msgid "Copy Value"
-msgstr ""
+msgstr "값 복사"
 
 msgid "Copy the value of the selected tag to clipboard"
-msgstr ""
+msgstr "선택한 태그의 값을 클립보드에 복사"
 
 msgid "Copy selected Key(s)/Value(s)"
-msgstr ""
+msgstr "선택한 키/값 복사"
 
 msgid "Copy the key and value of the selected tag(s) to clipboard"
-msgstr ""
+msgstr "선택한 키/값을 클립보드에 복사"
 
 msgid "Copy all Keys/Values"
-msgstr ""
+msgstr "모든 키/값 복사"
 
 msgid "Copy the key and value of all the tags to clipboard"
-msgstr ""
+msgstr "모든 키/값을 클립보드에 복사"
 
 msgid "Copy Tags"
-msgstr ""
+msgstr "태그 복사"
 
 msgid "Search Key/Value/Type"
-msgstr ""
+msgstr "키/값/유형 찾기"
 
 msgid ""
 "Search with the key and value of the selected tag, restrict to type (i.e., "
@@ -7289,32 +7305,30 @@ msgid ""
 msgstr ""
 
 msgid "Search Key/Value"
-msgstr ""
+msgstr "키/값 찾기"
 
 msgid "Search with the key and value of the selected tag"
-msgstr ""
+msgstr "선택한 태그의 키/값 찾기"
 
 msgid "Overwrite key"
-msgstr ""
+msgstr "키 덮어쓰기"
 
 msgid "Replace"
-msgstr ""
+msgstr "바꾸기"
 
 msgid "The new key is already used, overwrite values?"
 msgstr ""
 
 msgid "Change value?"
 msgid_plural "Change values?"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "값 변경"
 
 msgid "This will change {0} object."
 msgid_plural "This will change up to {0} objects."
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "{0}개의 개체를 변경하려고 합니다."
 
 msgid "An empty value deletes the tag."
-msgstr ""
+msgstr "값을 비우면 태그가 삭제됩니다."
 
 msgid "You changed the key from ''{0}'' to ''{1}''."
 msgstr ""
@@ -7328,39 +7342,38 @@ msgid "Use English language for tag by default"
 msgstr ""
 
 msgid "Add value?"
-msgstr ""
+msgstr "값 추가"
 
 msgid "This will change up to {0} object."
 msgid_plural "This will change up to {0} objects."
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "{0}개의 개체를 변경하려고 합니다."
 
 msgid "Please select a key"
-msgstr "key를 선택해 주십시오."
+msgstr "키를 선택해 주세요."
 
 msgid "Please select a value"
-msgstr "value를 선택해 주십시오."
+msgstr "값을 선택해 주세요."
 
 msgid "Set number of recently added tags"
-msgstr ""
+msgstr "최근에 추가된 태그 수 설정"
 
 msgid "Remember last used tags after a restart"
-msgstr ""
+msgstr "마지막으로 사용한 태그 기억"
 
 msgid "Recent tags with existing key"
-msgstr ""
+msgstr "기존 키가 포함된 최근 태그"
 
 msgid "Enable"
-msgstr ""
+msgstr "활성화"
 
 msgid "Hide"
-msgstr ""
+msgstr "숨김"
 
 msgid "Refresh recent tags list after applying tag"
 msgstr ""
 
 msgid "No refresh"
-msgstr ""
+msgstr "새로고침 안함"
 
 msgid "Refresh tag status only (enabled / disabled)"
 msgstr ""
@@ -7369,43 +7382,43 @@ msgid "Refresh tag status and list of recently added tags"
 msgstr ""
 
 msgid "to apply first suggestion"
-msgstr ""
+msgstr "- 첫번째 제안 적용"
 
 msgid "to add without closing the dialog"
-msgstr ""
+msgstr "- 대화 상자를 끝내지 않고 추가"
 
 msgid "to add first suggestion without closing the dialog"
-msgstr ""
+msgstr "- 대화 상자를 끝내지 않고 첫번째 제안 추가"
 
 msgid "Please enter the number of recently added tags to display"
-msgstr "표시할 최근 추가된 태그의 번호를 입력하세요."
+msgstr "표시할 최근 추가된 태그의 수를 입력하세요."
 
 msgid "Please enter integer number between 0 and {0}"
-msgstr ""
+msgstr "0 에서 {0} 사이의 정수를 입력하세요."
 
 msgid "Recently added tags"
-msgstr ""
+msgstr "최근에 추가된 태그"
 
 msgid "Choose recent tag {0}"
 msgstr ""
 
 msgid "Use this tag again"
-msgstr ""
+msgstr "이 태그 재사용"
 
 msgid "Apply recent tag {0}"
 msgstr ""
 
 msgid "The key ''{0}'' is already used"
-msgstr ""
+msgstr "키\"{0}\"는(은) 이미 사용되었습니다."
 
 msgid "Ignore key ''{0}''"
-msgstr ""
+msgstr "키 ''{0}'' 무시"
 
 msgid "Ignore tag ''{0}''"
-msgstr ""
+msgstr "태그 ''{0}'' 무시"
 
 msgid "Edit ignore list"
-msgstr ""
+msgstr "무시 목록 편집"
 
 msgid "You changed the value of ''{0}'' from ''{1}'' to ''{2}''."
 msgstr ""
@@ -7414,16 +7427,16 @@ msgid "Edit the relation the currently selected relation member refers to."
 msgstr ""
 
 msgid "Download all child relations (recursively)"
-msgstr ""
+msgstr "모든 하위 관계 다운로드 (반복적)"
 
 msgid "Download All Children"
-msgstr ""
+msgstr "모든 하위 관계 다운로드"
 
 msgid "Download selected relations"
-msgstr ""
+msgstr "선택한 관계 다운로드"
 
 msgid "Download Selected Children"
-msgstr ""
+msgstr "선택한 하위 관계 다운로드"
 
 msgid "Conflict in data"
 msgid_plural "Conflicts in data"
@@ -7431,7 +7444,7 @@ msgstr[0] ""
 msgstr[1] ""
 
 msgid "Download relation members"
-msgstr "관련된 멤버 다운로드"
+msgstr "관계 구성 요소 다운로드"
 
 msgid ""
 "<html>The child relation<br>{0}<br>is deleted on the server. It cannot be "
@@ -7442,7 +7455,7 @@ msgid "Relation is deleted"
 msgstr ""
 
 msgid "Downloading relation {0}"
-msgstr ""
+msgstr "관계 {0} 다운로드 중"
 
 msgid "Ignoring exception because task was canceled. Exception: {0}"
 msgstr ""
@@ -7469,22 +7482,22 @@ msgid "({0}/{1}): Downloading relation ''{2}''..."
 msgstr ""
 
 msgid "Tags and Members"
-msgstr ""
+msgstr "태그 및 구성 요소"
 
 msgid "Parent Relations"
-msgstr ""
+msgstr "상위 관계"
 
 msgid "Child Relations"
-msgstr ""
+msgstr "하위 관계"
 
 msgid "Enter a role and apply it to the selected relation members"
 msgstr ""
 
 msgid "Apply Role:"
-msgstr ""
+msgstr "역할 적용:"
 
 msgid "New Relation"
-msgstr ""
+msgstr "새 관계"
 
 msgid "Focus Relation Editor with relation ''{0}'' in layer ''{1}''"
 msgstr ""
@@ -7520,13 +7533,13 @@ msgid ""
 msgstr ""
 
 msgid "Select previous Gap"
-msgstr ""
+msgstr "이전 틈새 선택"
 
 msgid "Select the previous relation member which gives rise to a gap"
 msgstr ""
 
 msgid "Select next Gap"
-msgstr ""
+msgstr "다음 틈새 선택"
 
 msgid "Select the next relation member which gives rise to a gap"
 msgstr ""
@@ -7538,7 +7551,7 @@ msgid "Zoom to the gap in the way sequence"
 msgstr ""
 
 msgid "Refers to"
-msgstr ""
+msgstr "참조"
 
 msgid "Cannot add {0} since it is not part of dataset"
 msgstr ""
@@ -7553,16 +7566,16 @@ msgid "including immediate children of parent relations"
 msgstr ""
 
 msgid "Load parent relations"
-msgstr ""
+msgstr "상위 관계 불러오기"
 
 msgid "Reload"
 msgstr "새로고침"
 
 msgid "Loading parent relations"
-msgstr ""
+msgstr "상위 관계 불러오는 중"
 
 msgid "Edit the currently selected relation"
-msgstr ""
+msgstr "현재 선택된 관계 편집"
 
 msgid "Apply Changes"
 msgstr ""
@@ -7597,33 +7610,33 @@ msgid "Apply the current updates"
 msgstr ""
 
 msgid "Cancel the updates and close the dialog"
-msgstr ""
+msgstr "업데이트를 취소하고 대화 상자 닫기"
 
 msgid "Yes, save the changes and close"
-msgstr ""
+msgstr "예, 저장하고 닫습니다"
 
 msgid "Click to save the changes and close this relation editor"
-msgstr ""
+msgstr "변경 사항을 저장하고 이 관계 편집기를 닫으려면 클릭합니다."
 
 msgid "No, discard the changes and close"
-msgstr ""
+msgstr "아니요, 변경 사항을 취소하고 닫습니다"
 
 msgid "Click to discard the changes and close this relation editor"
-msgstr ""
+msgstr "변경 사항을 취소하고 이 관계 편집기를 닫으려면 클릭합니다."
 
 msgid "Cancel, continue editing"
-msgstr ""
+msgstr "취소, 계속 편집합니다"
 
 msgid "Click to return to the relation editor and to resume relation editing"
-msgstr ""
+msgstr "관계 편집기로 돌아가 관계 편집을 계속하려면 클릭합니다."
 
 msgid ""
 "<html>The relation has been changed.<br><br>Do you want to save your "
 "changes?</html>"
-msgstr ""
+msgstr "<html>이 관계는 변경되었습니다.<br><br>변경 사항을 저장하겠습니까?</html>"
 
 msgid "Unsaved changes"
-msgstr ""
+msgstr "저장하지 않은 변경 사항"
 
 msgid "Delete the currently edited relation"
 msgstr ""
@@ -7635,7 +7648,7 @@ msgid "Download all incomplete members"
 msgstr ""
 
 msgid "Download Members"
-msgstr ""
+msgstr "구성 요소 다운로드"
 
 msgid "Download selected incomplete members"
 msgstr ""
@@ -7644,28 +7657,28 @@ msgid "Edit the relation the currently selected relation member refers to"
 msgstr ""
 
 msgid "Relation Editor: Move Down"
-msgstr ""
+msgstr "관계 편집기: 아래로 이동"
 
 msgid "Move the currently selected members down"
-msgstr ""
+msgstr "현재 선택된 구성 요소를 아래로 이동"
 
 msgid "Relation Editor: Move Up"
-msgstr ""
+msgstr "관계 편집기: 위로 이동"
 
 msgid "Move the currently selected members up"
-msgstr ""
+msgstr "현재 선택된 구성 요소를 위로 이동"
 
 msgid "Apply the updates and close the dialog"
-msgstr ""
+msgstr "업데이트 적용하고 대화 상자 닫기"
 
 msgid "Relation Editor: Refresh"
-msgstr ""
+msgstr "관계 편집기: 새로고침"
 
 msgid "Refresh relation from data layer"
 msgstr ""
 
 msgid "Refresh"
-msgstr ""
+msgstr "새로고침"
 
 msgid "Yes, discard changes and reload"
 msgstr ""
@@ -7682,7 +7695,7 @@ msgid "Click to close window"
 msgstr ""
 
 msgid "No, continue editing"
-msgstr ""
+msgstr "취소, 계속 편집합니다"
 
 msgid ""
 "<html>Relation has been deleted outside editor.<br><br>Do you want to close "
@@ -7693,10 +7706,10 @@ msgid "Deleted relation"
 msgstr ""
 
 msgid "Relation Editor: Remove"
-msgstr ""
+msgstr "관계 편집기: 제거"
 
 msgid "Remove the currently selected members from this relation"
-msgstr ""
+msgstr "현재 선택된 구성 요소를 이 관계에서 제거"
 
 msgid "Remove all members referring to one of the selected objects"
 msgstr ""
@@ -7705,7 +7718,7 @@ msgid "Reverse the order of the relation members"
 msgstr ""
 
 msgid "Reverse"
-msgstr ""
+msgstr "뒤집기"
 
 msgid ""
 "One or more members of this new relation have been deleted while the "
@@ -7745,7 +7758,7 @@ msgid "Sets a role for the selected members"
 msgstr ""
 
 msgid "Apply Role"
-msgstr ""
+msgstr "역할 적용"
 
 msgid "You are setting an empty role on {0} object."
 msgid_plural "You are setting an empty role on {0} objects."
@@ -7768,10 +7781,10 @@ msgid "Confirm empty role"
 msgstr ""
 
 msgid "Relation Editor: Sort"
-msgstr ""
+msgstr "관계 편집기: 정렬"
 
 msgid "Sort the relation members"
-msgstr ""
+msgstr "관계 구성 요소 정렬"
 
 msgid "Sort below"
 msgstr ""
@@ -7780,19 +7793,19 @@ msgid "Sort the selected relation members and all members below"
 msgstr ""
 
 msgid "way is connected"
-msgstr ""
+msgstr "선이 연결되어 있음"
 
 msgid "way is connected to previous relation member"
-msgstr ""
+msgstr "선이 이전 구성 요소와 연결되어 있음"
 
 msgid "way is connected to next relation member"
-msgstr ""
+msgstr "선이 다음 구성 요소와 연결되어 있음"
 
 msgid "way is not connected to previous or next relation member"
-msgstr ""
+msgstr "선이 이전 또는 다음 구성 요소와 연결되지 않음"
 
 msgid "{0} - {1} ({2})"
-msgstr ""
+msgstr "{0} - {1} ({2})"
 
 msgid "Wrong number of arguments for bookmark"
 msgstr ""
@@ -7801,7 +7814,7 @@ msgid "Error reading bookmark entry: %s"
 msgstr ""
 
 msgid "Bookmarks"
-msgstr "책갈피"
+msgstr "북마크"
 
 msgid "<html>There is currently no download area selected.</html>"
 msgstr ""
@@ -7809,29 +7822,29 @@ msgstr ""
 msgid ""
 "<html><strong>Current download area</strong> (minlon, minlat, maxlon, "
 "maxlat): </html>"
-msgstr ""
+msgstr "<html><strong>현재 다운로드 영역</strong> (최소 경도/위도, 최대 경도/위도): </html>"
 
 msgid "Create bookmark"
-msgstr ""
+msgstr "북마크 생성"
 
 msgid "Add a bookmark for the currently selected download area"
-msgstr ""
+msgstr "현재 선택된 다운로드 영역에 대한 북마크 추가"
 
 msgid ""
 "Currently, there is no download area selected. Please select an area first."
 msgstr ""
 
 msgid "Please enter a name for the bookmarked download area."
-msgstr ""
+msgstr "다운로드 영역에 대한 북마크 이름을 입력해 주세요."
 
 msgid "Name of location"
-msgstr ""
+msgstr "위치 이름"
 
 msgid "Remove the currently selected bookmarks"
-msgstr ""
+msgstr "현재 선택된 북마크 제거"
 
 msgid "Rename the currently selected bookmark"
-msgstr ""
+msgstr "현재 선택된 북마크 이름 바꾸기"
 
 msgid "min lat"
 msgstr "최소 위도"
@@ -7846,7 +7859,7 @@ msgid "max lon"
 msgstr "최대 경도"
 
 msgid "Clear textarea"
-msgstr ""
+msgstr "텍스트 영역 지우기"
 
 msgid ""
 "URL from www.openstreetmap.org (you can paste an URL here to download the "
@@ -7854,50 +7867,60 @@ msgid ""
 msgstr ""
 
 msgid "Bounding Box"
-msgstr ""
+msgstr "바운딩 박스"
 
 msgid "The string ''{0}'' is not a valid double value."
 msgstr ""
 
 msgid "Value for latitude in range [-90,90] required."
-msgstr ""
+msgstr "[-90,90] 범위의 위도값이 필요합니다."
 
 msgid "Value for longitude in range [-180,180] required."
-msgstr ""
+msgstr "[-180,180] 범위의 경도값이 필요합니다."
 
 msgid "Data Sources and Types:"
-msgstr ""
+msgstr "데이터 소스 및 유형:"
 
 msgid "OpenStreetMap data"
-msgstr ""
+msgstr "OpenStreetMap 데이터"
 
 msgid "Select to download OSM data in the selected download area."
-msgstr ""
+msgstr "선택하면 선택한 다운로드 영역에서 OSM 데이터를 다운로드합니다."
 
 msgid "Raw GPS data"
 msgstr "원본 GPS 데이터"
 
 msgid "Select to download GPS traces in the selected download area."
-msgstr ""
+msgstr "선택하면 선택한 다운로드 영역에서 GPS 추적을 다운로드합니다."
 
 msgid "Select to download notes in the selected download area."
-msgstr ""
+msgstr "선택하면 선택한 다운로드 영역에서 참고를 다운로드합니다."
 
 msgid "Download as new layer"
-msgstr ""
+msgstr "새 레이어로 다운로드"
 
 msgid ""
 "<html>Select to download data into a new data layer.<br>Unselect to download "
 "into the currently active data layer.</html>"
 msgstr ""
+"<html>선택하면 데이터를 새 데이터 레이어로 다운로드합니다..<br>선택하지 않으면 현재 활성화된 데이터 레이어로 "
+"다운로드합니다.</html>"
 
 msgid "Open this dialog on startup"
-msgstr ""
+msgstr "시작 시 이 대화 상자 열기"
 
 msgid ""
 "<html>Autostart ''Download from OSM'' dialog every time JOSM is "
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
+"<html>JOSM이 시작될 때마다 \"OSM에서 다운로드\" 대화 상자가 자동으로 열립니다.<br>파일 메뉴나 도구 모음에서 수동으로 "
+"열 수 있습니다.</html>"
+
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
 
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
@@ -7908,31 +7931,33 @@ msgid "No area selected yet"
 msgstr ""
 
 msgid "Download area too large; will probably be rejected by server"
-msgstr ""
+msgstr "다운로드 영역이 너무 큽니다; 다운로드가 거부될 수 있습니다."
 
 msgid "Download area ok, size probably acceptable to server"
-msgstr ""
+msgstr "다운로드 영역이 적당한 크기입니다."
 
 msgid "Click to close the dialog and to abort downloading"
-msgstr ""
+msgstr "대화 상자를 닫고 다운로드를 중단하려면 클릭합니다."
 
 msgid "Click to download the currently selected area"
-msgstr ""
+msgstr "현재 선택한 영역을 다운로드하려면 클릭합니다."
 
 msgid "Please select a download area first."
-msgstr ""
+msgstr "먼저 다운로드 영역을 선택해 주세요."
 
 msgid ""
 "<html>Neither <strong>{0}</strong> nor <strong>{1}</strong> nor "
 "<strong>{2}</strong> is enabled.<br>Please choose to either download OSM "
 "data, or GPX data, or Notes, or all.</html>"
 msgstr ""
+"<html><strong>{0}</strong>, <strong>{1}</strong>, <strong>{2}</strong>가 "
+"비활성화되어 있습니다.<br>OSM 데이터, GPX 데이터, 참고 중 다운로드할 것을 선택해 주세요.</html>"
 
 msgid "Download referrers (parent relations)"
-msgstr "다운로드 참조자 (부모 관계)"
+msgstr "참조자 다운로드 (상위 관계)"
 
 msgid "Download object"
-msgstr "오브젝트 다운로드"
+msgstr "개체 다운로드"
 
 msgid "Start downloading"
 msgstr "다운로드 시작"
@@ -7943,34 +7968,34 @@ msgid ""
 msgstr ""
 
 msgid "Select if the members of a relation should be downloaded as well"
-msgstr ""
+msgstr "관계의 구성 요소도 다운로드하려면 선택합니다."
 
 msgid "Download referrers (parent relations and ways)"
 msgstr ""
 
 msgid "Class Type"
-msgstr ""
+msgstr "클래스 유형"
 
 msgid "Bounds"
-msgstr ""
+msgstr "경계"
 
 msgid "Choose the server for searching:"
-msgstr ""
+msgstr "검색할 서버를 선택합니다:"
 
 msgid "Enter a place name to search for:"
-msgstr ""
+msgstr "검색할 장소 이름을 입력합니다:"
 
 msgid "Enter a place name to search for"
-msgstr ""
+msgstr "검색할 장소 이름을 입력합니다."
 
 msgid "Areas around places"
-msgstr ""
+msgstr "장소 인근 지역"
 
 msgid "Search ..."
-msgstr ""
+msgstr "검색..."
 
 msgid "Click to start searching for places"
-msgstr ""
+msgstr "검색을 시작하려면 클릭합니다."
 
 msgid "Querying name server"
 msgstr ""
@@ -7988,16 +8013,16 @@ msgid "Bad response"
 msgstr ""
 
 msgid "Type"
-msgstr ""
+msgstr "유형"
 
 msgid "Slippy map"
-msgstr ""
+msgstr "슬리피 지도"
 
 msgid "Tile Numbers"
-msgstr ""
+msgstr "타일 번호"
 
 msgid "JOSM Help Browser"
-msgstr ""
+msgstr "JOSM 도움말 브라우저"
 
 msgid "Failed to read CSS file ''help-browser.css''. Exception is: {0}"
 msgstr ""
@@ -8031,7 +8056,7 @@ msgid "Open the current help page in an external browser"
 msgstr ""
 
 msgid "Edit the current help page"
-msgstr ""
+msgstr "현재 도움말 페이지 편집"
 
 msgid ""
 "<html>The current URL <tt>{0}</tt><br>is an external URL. Editing is only "
@@ -8039,16 +8064,16 @@ msgid ""
 msgstr ""
 
 msgid "Reload the current help page"
-msgstr ""
+msgstr "현재 도움말 페이지 새로고침"
 
 msgid "Go to the previous page"
-msgstr ""
+msgstr "이전 페이지로 이동"
 
 msgid "Go to the next page"
-msgstr ""
+msgstr "다음 페이지로 이동"
 
 msgid "Go to the JOSM help home page"
-msgstr ""
+msgstr "JOSM 도움말 홈 페이지로 이동"
 
 msgid "Bad location in HTML document. Exception was: {0}"
 msgstr ""
@@ -8060,28 +8085,28 @@ msgid "Failed to open help page"
 msgstr ""
 
 msgid "Latitude: "
-msgstr ""
+msgstr "위도: "
 
 msgid "Longitude: "
-msgstr ""
+msgstr "경도: "
 
 msgid "Distance: "
-msgstr ""
+msgstr "거리: "
 
 msgid "Coordinates"
-msgstr ""
+msgstr "좌표"
 
 msgid "History for node {0}"
-msgstr ""
+msgstr "점 {0}에 대한 역사"
 
 msgid "History for way {0}"
-msgstr ""
+msgstr "선 {0}에 대한 역사"
 
 msgid "History for relation {0}"
-msgstr ""
+msgstr "관계 {0}에 대한 역사"
 
 msgid "Reload the history from the server"
-msgstr ""
+msgstr "서버에서 역사를 다시 불러오기"
 
 msgid "History not initialized yet. Failed to set reference primitive."
 msgstr ""
@@ -8103,25 +8128,25 @@ msgid ""
 msgstr ""
 
 msgid "Load history"
-msgstr ""
+msgstr "역사 불러오기"
 
 msgid "Loading history for node {0}"
-msgstr ""
+msgstr "점 {0}에 대한 역사를 불러오는 중"
 
 msgid "Loading history for way {0}"
-msgstr ""
+msgstr "선 {0}에 대한 역사를 불러오는 중"
 
 msgid "Loading history for relation {0}"
-msgstr ""
+msgstr "관계 {0}에 대한 역사를 불러오는 중"
 
 msgid "Node {0}"
-msgstr ""
+msgstr "점 {0}"
 
 msgid "The nodes of this way are in reverse order"
 msgstr ""
 
 msgid "Zoom to node"
-msgstr ""
+msgstr "점으로 이동"
 
 msgid "Zoom to this node in the current data layer"
 msgstr ""
@@ -8130,36 +8155,36 @@ msgid "Open a history browser with the history of this node"
 msgstr ""
 
 msgid "Way {0}"
-msgstr ""
+msgstr "선 {0}"
 
 msgid "Relation {0}"
-msgstr ""
+msgstr "관계 {0}"
 
 msgid "Object"
-msgstr "대상"
+msgstr "개체"
 
 msgid "Changeset comment"
-msgstr ""
+msgstr "바뀜집합 설명"
 
 msgid "Changeset source"
-msgstr ""
+msgstr "바뀜집합 출처"
 
 msgid "Imagery used"
-msgstr ""
+msgstr "사용되는 사진"
 
 msgid "<b>Source</b>:"
-msgstr ""
+msgstr "<b>출처</b>:"
 
 msgid "<b>Imagery</b>:"
-msgstr ""
+msgstr "<b>사진</b>:"
 
 msgid ""
 "<html>Version <strong>{0}</strong> currently edited in layer ''{1}''</html>"
-msgstr ""
+msgstr "<html>버전 <strong>{0}</strong>이(가) 현재 \"{1}\"에서 편집됨</html>"
 
 msgid ""
 "<html>Version <strong>{0}</strong> created on <strong>{1}</strong></html>"
-msgstr ""
+msgstr "<html>버전 <strong>{0}</strong>이(가) <strong>{1}</strong>에 생섬됨</html>"
 
 msgid "This changeset has {0} comment"
 msgid_plural "This changeset has {0} comments"
@@ -8167,37 +8192,37 @@ msgstr[0] ""
 msgstr[1] ""
 
 msgid "Changeset"
-msgstr ""
+msgstr "바뀜집합"
 
 msgid "Changeset info"
-msgstr ""
+msgstr "바뀜집합 정보"
 
 msgid "Launch browser with information about the changeset"
-msgstr ""
+msgstr "바뀜집합에 대한 정보를 웹브라우저로 보기"
 
 msgid "Show changeset {0}"
-msgstr ""
+msgstr "바뀜집합 {0} 보기"
 
 msgid "User info"
-msgstr ""
+msgstr "사용자 정보"
 
 msgid "Launch browser with information about the user"
-msgstr ""
+msgstr "사용자에 대한 정보를 웹브라우저로 보기"
 
 msgid "Show user {0}"
-msgstr ""
+msgstr "사용자 {0} 보기"
 
 msgid "Ver"
-msgstr ""
+msgstr "버전"
 
 msgid "A"
-msgstr ""
+msgstr "A"
 
 msgid "B"
-msgstr ""
+msgstr "B"
 
 msgid "Editor"
-msgstr ""
+msgstr "편집기"
 
 msgid ""
 "Failed to update primitive with id {0} because current edit layer is null"
@@ -8209,16 +8234,16 @@ msgid ""
 msgstr ""
 
 msgid "Synchronize node {0} only"
-msgstr ""
+msgstr "점 {0}만 동기화"
 
 msgid "Synchronize way {0} only"
-msgstr ""
+msgstr "선 {0}만 동기화"
 
 msgid "Synchronize relation {0} only"
-msgstr ""
+msgstr "관계 {0}만 동기화"
 
 msgid "Synchronize entire dataset"
-msgstr "전체 dataset을 동기화"
+msgstr "전체 데이터 집합 동기화"
 
 msgid ""
 "<html>Uploading <strong>failed</strong> because the server has a newer "
@@ -8230,11 +8255,11 @@ msgid ""
 "server.<br>Click <strong>{6}</strong> to abort and continue "
 "editing.<br></html>"
 msgstr ""
-"<html>서버에 있는 node, way, realtion중 하나가 업로드하려는 것보다 최신이어서 업로드에 실패했습니다.<br>{0}  "
-"id:<strong>{1}</strong> 에서 충돌이 발생했습니다 <br>서버 것의 버전은 {2}, 업로드하려던 것은 "
-"{3}.<br><br> <strong>{4}</strong>을 클릭하여 충돌한 것들만 "
-"동기화.<br><strong>{5}</strong>을 클릭하여 전체 dataset을 동기화<br><strong>{6}</strong>을 "
-"클릭하여 업로드 취소<br></html>"
+"<html>서버에 있는 점, 선, 관계 중 하나가 업로드하려는 것보다 최신 버전이어서 업로드에 "
+"<strong>실패했습니다.</strong><br>{0} id <strong>{1}</strong>에서 충돌이 발생했습니다.<br>서버 "
+"것의 버전은 {2}, 업로드하려던 것은 {3}입니다.<br><br><strong>{4}</strong>를 클릭하여 충돌한 것들만 동기화 "
+"하거나,<br><strong>{5}</strong>를 클릭하여 전체 데이터 집합을 동기화 "
+"하거나,<br><strong>{6}</strong>를 클릭하여 업로드를 취소하고 계속 편집합니다.<br></html>"
 
 msgid ""
 "<html>Uploading <strong>failed</strong> because the server has a newer "
@@ -8243,9 +8268,9 @@ msgid ""
 "server.<br>Click <strong>{1}</strong> to abort and continue "
 "editing.<br></html>"
 msgstr ""
-"<html>서버의 node, way, relation중 하나의 버전이 업로드하려는 것보다 버전이 높아 업로드가 "
-"실패했습니다<br><br><strong>{0}</strong>을 클릭하여 전체 dataset을 "
-"동기화<br><strong>{1}</strong>을 클릭하여 업로드 취소<br></html>"
+"<html>서버에 있는 점, 선, 관계 중 하나가 업로드하려는 것보다 최신 버전이어서 업로드에 "
+"<strong>실패했습니다.</strong><br><br><strong>{0}</strong>을를 클릭하여 전체 데이터 집합을 동기화 "
+"하거나,<br><strong>{1}</strong>를 클릭하여 업로드를 취소하고 계속 편집합니다.<br></html>"
 
 msgid ""
 "<html>Uploading <strong>failed</strong> because you have been "
@@ -8254,7 +8279,7 @@ msgid ""
 msgstr ""
 
 msgid "Changeset closed"
-msgstr "changeset을 닫았음"
+msgstr "바뀜집합이 마감됨"
 
 msgid "Prepare conflict resolution"
 msgstr ""
@@ -8277,98 +8302,98 @@ msgid "Error header \"{0}\" did not match with an expected pattern"
 msgstr ""
 
 msgid "Upload"
-msgstr ""
+msgstr "업로드"
 
 msgid ""
 "Select which actions to perform for this layer, if you click the leftmost "
 "button."
-msgstr ""
+msgstr "이 레이어에 대해 수행할 동작을 선택합니다."
 
 msgid "Check \"Upload\" to upload the changes to the OSM server."
-msgstr ""
+msgstr "\"업로드\"를 체크하면 OSM 서버에 변경 사항을 업로드합니다."
 
 msgid "Check \"Save\" to save the layer to the file specified on the left."
-msgstr ""
+msgstr "\"저장\"을 체크하면 레이어를 왼쪽에 지정된 파일에 저장합니다."
 
 msgid "Provide a brief comment for the changes you are uploading:"
-msgstr ""
+msgstr "업로드하려는 변경 사항에 대한 간략한 설명:"
 
 msgid "Enter an upload comment"
-msgstr ""
+msgstr "업로드 설명을 입력합니다."
 
 msgid "Specify the data source for the changes"
-msgstr ""
+msgstr "변경 사항의 데이터 출처 지정"
 
 msgid "obtain from current layers"
-msgstr ""
+msgstr "현재 레이어에서 가져오기"
 
 msgid "Enter a source"
-msgstr ""
+msgstr "출처를 입력합니다."
 
 msgid "Changeset id:"
-msgstr ""
+msgstr "바뀜집합 ID:"
 
 msgid "Created at:"
-msgstr ""
+msgstr "생성한 일시:"
 
 msgid "Changeset comment:"
-msgstr ""
+msgstr "바뀜집합 설명:"
 
 msgid "No open changeset"
-msgstr "열려있는 changeset이 없음"
+msgstr "열린 바뀜집합 없음"
 
 msgid ""
 "Please decide what changeset the data is uploaded to and whether to close "
 "the changeset after the next upload."
-msgstr ""
+msgstr "데이터를 무슨 바뀜집합으로 업로드할지, 바뀜집합을 다음 업로드 때 마감할지 결정해 주세요."
 
 msgid "Upload to a new changeset"
-msgstr ""
+msgstr "새 바뀜집합으로 업로드"
 
 msgid "Open a new changeset and use it in the next upload"
-msgstr ""
+msgstr "새 바뀜집합을 마감하지 않고 다음 업로드 때 사용"
 
 msgid "Upload to an existing changeset"
-msgstr ""
+msgstr "기존 바뀜집합으로 업로드"
 
 msgid "Upload data to an already existing and open changeset"
-msgstr ""
+msgstr "마감하지 않은 바뀜집합으로 데이터 업로드"
 
 msgid "Select an open changeset"
-msgstr ""
+msgstr "마감하지 않은 바뀜집합 선택"
 
 msgid "Close changeset after upload"
-msgstr ""
+msgstr "업로드 후 바뀜집합 마감"
 
 msgid "Select to close the changeset after the next upload"
-msgstr ""
+msgstr "업로드 후 바뀜집합을 마감하려면 체크"
 
 msgid "Load the list of your open changesets from the server"
-msgstr ""
+msgstr "서버에서 마감하지 않은 내 바뀜집합 목록 불러오기"
 
 msgid "Close the currently selected open changeset"
-msgstr ""
+msgstr "현재 선택된 마감하지 않은 바뀜집합 마감"
 
 msgid "<html>Please select the changesets you want to close</html>"
-msgstr ""
+msgstr "<html>마감할 바뀜집합을 선택해 주세요.</html>"
 
 msgid "Open changesets"
-msgstr ""
+msgstr "마감하지 않은 바뀜집합"
 
 msgid "Close changesets"
 msgstr ""
 
 msgid "Close the selected open changesets"
-msgstr ""
+msgstr "선택한 마감하지 않은 바뀜집합을 마감"
 
 msgid "Cancel closing of changesets"
-msgstr ""
+msgstr "바뀜집합 마감을 취소합니다."
 
 msgid "Closing changeset"
-msgstr "changeset 닫기"
+msgstr "바뀜집합 마감하는 중"
 
 msgid "Closing changeset {0}"
-msgstr ""
+msgstr "바뀜집합 {0}을(를) 마감하는 중"
 
 msgid ""
 "Failed to put Credential Dialog always on top. Caught security exception."
@@ -8384,10 +8409,10 @@ msgid "Enter credentials for HTTP proxy"
 msgstr ""
 
 msgid "Password"
-msgstr "비밀 번호"
+msgstr "비밀번호"
 
 msgid "Warning: The password is transferred unencrypted."
-msgstr ""
+msgstr "경고: 비밀번호가 암호화되지 않은 상태로 전송됩니다."
 
 msgid "Please enter the user name of your OSM account"
 msgstr ""
@@ -8428,7 +8453,7 @@ msgid ""
 msgstr ""
 
 msgid "Authenticate"
-msgstr ""
+msgstr "인증"
 
 msgid "Authenticate with the supplied username and password"
 msgstr ""
@@ -8472,11 +8497,11 @@ msgstr ""
 
 msgid "Object could not be downloaded"
 msgid_plural "Some objects could not be downloaded"
-msgstr[0] "오브젝트를 다운로드할 수 없습니다."
+msgstr[0] "개체를 다운로드할 수 없습니다."
 
 msgid "One object could not be downloaded.<br>"
 msgid_plural "{0} objects could not be downloaded.<br>"
-msgstr[0] "{0}개의 오브젝트를 다운로드 할 수 없습니다.<br>"
+msgstr[0] "{0}개의 개체를 다운로드할 수 없습니다.<br>"
 
 msgid ""
 "The server replied with response code 404.<br>This usually means, the server "
@@ -8484,22 +8509,22 @@ msgid ""
 msgstr ""
 
 msgid "missing objects:"
-msgstr "손실된 오브젝트:"
+msgstr "누락된 개체:"
 
 msgid "One downloaded object is deleted."
 msgid_plural "{0} downloaded objects are deleted."
-msgstr[0] "{0}개의 다운로드된 오브젝트가 삭제됨"
+msgstr[0] "{0}개의 다운로드된 개체가 삭제됨"
 
 msgid ""
 "Either edit the path manually in the text field or click the \"...\" button "
 "to open a file chooser."
-msgstr ""
+msgstr "텍스트 필드에 경로를 수동으로 편집하거나 \"...\" 버튼을 클릭하여 파일 선택 창을 엽니다."
 
 msgid "The bold text is the name of the layer."
-msgstr ""
+msgstr "굵은체 텍스트는 레이어의 이름입니다."
 
 msgid "Click here to choose save path"
-msgstr ""
+msgstr "저장 경로를 선택하려면 여기를 클릭하세요."
 
 msgid "Layer ''{0}'' is not backed by a file"
 msgstr ""
@@ -8508,37 +8533,37 @@ msgid "File ''{0}'' is not writable. Please enter another file name."
 msgstr ""
 
 msgid "Click cell to change the file path."
-msgstr ""
+msgstr "파일 경로를 변경하려면 셀을 클릭합니다."
 
 msgid "Launch a file chooser to select a file"
-msgstr ""
+msgstr "파일 선택 창을 열어 파일을 선택합니다."
 
 msgid "Select filename"
-msgstr ""
+msgstr "파일 이름 선택"
 
 msgid "Open Recent"
-msgstr ""
+msgstr "최근에 열어 본 파일"
 
 msgid "List of recently opened files"
-msgstr ""
+msgstr "최근에 열어 본 파일 목록"
 
 msgid "Clear"
-msgstr ""
+msgstr "지우기"
 
 msgid "Clear the list of recently opened files"
-msgstr ""
+msgstr "최근에 열어 본 파일 목록을 지움"
 
 msgid "Saving layer to ''{0}'' ..."
 msgstr ""
 
 msgid "Unsaved changes - Save/Upload before exiting?"
-msgstr ""
+msgstr "저장하지 않은 변경사항 - 종료하기 전에 저장/업로드를 하시겠습니까?"
 
 msgid "Unsaved changes - Save/Upload before deleting?"
-msgstr ""
+msgstr "저장하지 않은 변경사항 - 삭제하기 전에 저장/업로드를 하시겠습니까?"
 
 msgid "Unsaved changes - Save/Upload before restarting?"
-msgstr ""
+msgstr "저장하지 않은 변경사항 - 다시 시작하기 전에 저장/업로드를 하시겠습니까?"
 
 msgid "Uploading and saving modified layers ..."
 msgstr ""
@@ -8583,43 +8608,43 @@ msgid "Unsaved data non-writable files"
 msgstr ""
 
 msgid "Close this dialog and resume editing in JOSM"
-msgstr ""
+msgstr "이 대화 상자를 닫고 편집을 재개합니다."
 
 msgid "Exit now!"
-msgstr ""
+msgstr "지금 종료"
 
 msgid "Exit JOSM without saving. Unsaved changes are lost."
-msgstr ""
+msgstr "저장하지 않고 JOSM을 종료합니다. 저장하지 않은 변경 사항은 손실됩니다."
 
 msgid "Restart now!"
-msgstr ""
+msgstr "지금 다시 시작"
 
 msgid "Restart JOSM without saving. Unsaved changes are lost."
-msgstr ""
+msgstr "저장하지 않고 JOSM을 다시 시작합니다. 저장하지 않은 변경 사항은 손실됩니다."
 
 msgid "Delete now!"
-msgstr ""
+msgstr "지금 삭제"
 
 msgid "Delete layers without saving. Unsaved changes are lost."
-msgstr ""
+msgstr "저장하지 않고 레이어를 삭제합니다. 저장하지 않은 변경 사항은 손실됩니다."
 
 msgid "Perform actions before exiting"
-msgstr ""
+msgstr "종료하기 전에 작업 실행"
 
 msgid "Exit JOSM with saving. Unsaved changes are uploaded and/or saved."
-msgstr ""
+msgstr "저장하고 JOSM을 종료합니다. 저장하지 않은 변경 사항은 업로드되거나 저장됩니다."
 
 msgid "Perform actions before restarting"
-msgstr ""
+msgstr "다시 시작하기 전에 작업 실행"
 
 msgid "Restart JOSM with saving. Unsaved changes are uploaded and/or saved."
-msgstr ""
+msgstr "저장하고 JOSM을 다시 시작합니다. 저장하지 않은 변경 사항은 업로드되거나 저장됩니다."
 
 msgid "Perform actions before deleting"
-msgstr ""
+msgstr "삭제하기 전에 작업 실행"
 
 msgid "Save/Upload layers before deleting. Unsaved changes are not lost."
-msgstr ""
+msgstr "삭제하기 전에 레이어를 저장/업로드합니다. 저장하지 않은 변경 사항은 손실되지 않습니다."
 
 msgid "Preparing layer ''{0}'' for upload ..."
 msgstr ""
@@ -8661,16 +8686,16 @@ msgid "Layer ''{0}'' has no modifications to be saved."
 msgstr ""
 
 msgid "Layer Name and File Path"
-msgstr ""
+msgstr "레이어 이름 및 파일 경로"
 
 msgid "Recommended Actions"
-msgstr ""
+msgstr "권장 작업"
 
 msgid "Actions To Take"
-msgstr ""
+msgstr "실행할 작업"
 
 msgid "Update objects"
-msgstr ""
+msgstr "개체 업데이트"
 
 msgid "Initializing nodes to update ..."
 msgstr ""
@@ -8682,34 +8707,34 @@ msgid "Initializing relations to update ..."
 msgstr ""
 
 msgid "Settings"
-msgstr ""
+msgstr "설정"
 
 msgid "Decide how to upload the data and which changeset to use"
 msgstr ""
 
 msgid "Tags of new changeset"
-msgstr ""
+msgstr "새 바뀜집합 태그"
 
 msgid "Apply tags to the changeset data is uploaded to"
-msgstr ""
+msgstr "업로드될 바뀜집합에 태그를 적용합니다."
 
 msgid "Manage open changesets and select a changeset to upload to"
 msgstr ""
 
 msgid "Configure advanced settings"
-msgstr ""
+msgstr "고급 설정을 구성합니다."
 
 msgid "Upload to ''{0}''"
-msgstr ""
+msgstr "''{0}''에 업로드"
 
 msgid "Upload Changes"
-msgstr ""
+msgstr "변경 사항 업로드"
 
 msgid "Upload the changed primitives"
 msgstr ""
 
 msgid "Please revise upload comment"
-msgstr ""
+msgstr "업로드 설명을 보완해 주세요"
 
 msgid ""
 "Your upload comment is <i>empty</i>, or <i>very short</i>.<br /><br />This "
@@ -8720,7 +8745,7 @@ msgid ""
 msgstr ""
 
 msgid "Please specify a changeset source"
-msgstr ""
+msgstr "바뀜집합 출처를 지정해 주세요"
 
 msgid ""
 "You did not specify a source for your changes.<br />It is technically "
@@ -8730,25 +8755,25 @@ msgid ""
 msgstr ""
 
 msgid "Revise"
-msgstr ""
+msgstr "보완"
 
 msgid "Continue as is"
-msgstr ""
+msgstr "계속"
 
 msgid "Return to the previous dialog to enter a more descriptive comment"
-msgstr ""
+msgstr "이전 대화 상자로 돌아가서 보다 자세한 설명을 입력합니다."
 
 msgid "Cancel and return to the previous dialog"
-msgstr ""
+msgstr "취소하고 이전 대화 상자로 돌아갑니다."
 
 msgid "Please enter a valid chunk size first"
 msgstr ""
 
 msgid "Illegal chunk size"
-msgstr ""
+msgstr "잘못된 청크 크기"
 
 msgid "{0}={1}"
-msgstr ""
+msgstr "{0}={1}"
 
 msgid ""
 "<html>The following changeset tag contains an empty "
@@ -8763,10 +8788,10 @@ msgid "Empty metadata"
 msgstr ""
 
 msgid "Cancel the upload and resume editing"
-msgstr ""
+msgstr "업로드를 취소하고 계속 편집합니다."
 
 msgid "Tags of changeset {0}"
-msgstr ""
+msgstr "바뀜집합 {0}의 태그"
 
 msgid ""
 "Object ''{0}'' is already deleted on the server. Skipping this object and "
@@ -9218,6 +9243,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -9237,16 +9265,16 @@ msgid "Empty document"
 msgstr "빈 문서"
 
 msgid "Save anyway"
-msgstr "무조건 저장"
+msgstr "어쨌든 저장"
 
 msgid "The document contains no data."
 msgstr "문서에 아무런 데이터가 존재하지 않습니다"
 
 msgid "Conflicts"
-msgstr "모순"
+msgstr "충돌"
 
 msgid "Reject Conflicts and Save"
-msgstr "모순은 제거하고 제정"
+msgstr ""
 
 msgid ""
 "There are unresolved conflicts. Conflicts will not be saved and handled as "
@@ -9664,16 +9692,16 @@ msgid "Precaching WMS"
 msgstr ""
 
 msgid "Please select the imagery layer."
-msgstr ""
+msgstr "사진 레이어를 선택하세요."
 
 msgid "Select imagery layer"
-msgstr ""
+msgstr "사진 레이어 선택"
 
 msgid "There are no imagery layers."
-msgstr ""
+msgstr "사진 레이어가 없습니다."
 
 msgid "No imagery layers"
-msgstr ""
+msgstr "사진 레이어 없음"
 
 msgid "gps point"
 msgstr ""
@@ -10305,10 +10333,10 @@ msgid "Entry ''{0}'' requires JOSM Version {1}. (Currently running: {2})"
 msgstr ""
 
 msgid "Continue anyway"
-msgstr ""
+msgstr "어쨌든 계속하기"
 
 msgid "Ignore warning and install style anyway"
-msgstr ""
+msgstr "어쨌든 경고를 무시하고 스타일을 설치"
 
 msgid "Some entries have unmet dependencies:"
 msgstr ""
@@ -10455,7 +10483,7 @@ msgid "toolbar"
 msgstr ""
 
 msgid "imagery"
-msgstr ""
+msgstr "사진"
 
 msgid "Reset preferences"
 msgstr ""
@@ -10644,7 +10672,7 @@ msgid "Colors"
 msgstr "색상"
 
 msgid "Display Settings"
-msgstr "화면설정"
+msgstr "표시 설정"
 
 msgid ""
 "Various settings that influence the visual representation of the whole "
@@ -11069,7 +11097,7 @@ msgid "Default (Auto determined)"
 msgstr ""
 
 msgid "Add Imagery URL"
-msgstr ""
+msgstr "사진 URL 추가"
 
 msgid "1. Enter URL"
 msgstr ""
@@ -11174,13 +11202,13 @@ msgid "Tile cache directory: "
 msgstr ""
 
 msgid "Maximum size of disk cache (per imagery) in MB: "
-msgstr ""
+msgstr "MB로 (사진당) 디스크 캐시의 최대 크기: "
 
 msgid "Tiles zoom offset:"
 msgstr ""
 
 msgid "Imagery Preferences"
-msgstr ""
+msgstr "사진 환경 설정"
 
 msgid "Modify list of imagery layers displayed in the Imagery menu"
 msgstr ""
@@ -11195,7 +11223,7 @@ msgid "TMS Settings"
 msgstr ""
 
 msgid "Imagery providers"
-msgstr ""
+msgstr "사진 제공자"
 
 msgid "Offset bookmarks"
 msgstr ""
@@ -11204,7 +11232,7 @@ msgid "Cache contents"
 msgstr ""
 
 msgid "Imagery Background: Default"
-msgstr ""
+msgstr "사진 배경: 기본값"
 
 msgid "Available default entries:"
 msgstr ""
@@ -11228,13 +11256,13 @@ msgid "Menu Name"
 msgstr ""
 
 msgid "Imagery URL"
-msgstr ""
+msgstr "사진 URL"
 
 msgid "Menu Name (Default)"
 msgstr ""
 
 msgid "Imagery URL (Default)"
-msgstr ""
+msgstr "사진 URL (기본값)"
 
 msgid "EULA license URL not available: {0}"
 msgstr ""
@@ -11565,7 +11593,7 @@ msgid "Load plugins from list"
 msgstr ""
 
 msgid "The following plugins were not found. Continue anyway?"
-msgstr ""
+msgstr "다음 플러그인을 찾을 수 없었습니다. 어쨌든 계속하시겠습니까?"
 
 msgid "Add JOSM Plugin description URL."
 msgstr ""
@@ -12028,6 +12056,8 @@ msgid ""
 "Use standard system settings (disabled. Start JOSM with <tt>-"
 "Djava.net.useSystemProxies=true</tt> to enable)"
 msgstr ""
+"표준 시스템 설정 사용 (비활성화됨. 활성화하려면 <tt>-Djava.net.useSystemProxies=true</tt>으로 "
+"JOSM을 시작하세요)"
 
 msgid "Manually configure a HTTP proxy"
 msgstr ""
@@ -12353,11 +12383,13 @@ msgid ""
 "Broken tagging preset \"{0}-{1}\" - Java method given in ''values_from'' is "
 "not \"{2}\""
 msgstr ""
+"잘못된 프리셋 태깅 \"{0}-{1}\" - ''values_from''에 주어진 Java 메서드는 \"{2}\"이 아닙니다"
 
 msgid ""
 "Broken tagging preset \"{0}-{1}\" - Java method given in ''values_from'' "
 "threw {2} ({3})"
 msgstr ""
+"잘못된 프리셋 태깅 \"{0}-{1}\" - ''values_from''에 주어진 Java 메서드는 {2}를 던졌습니다 ({3})"
 
 msgid ""
 "Broken tagging preset \"{0}-{1}\" - number of items in ''display_values'' "
@@ -12635,6 +12667,8 @@ msgid ""
 "property ''java.net.useSystemProxies'' was missing at startup time.  Will "
 "not use a proxy."
 msgstr ""
+"JVM은 시스템 설정에서 프록시를 조회하도록 구성되어 있지 않습니다. ''java.net.useSystemProxies'' 속성은 시작시 "
+"없었습니다. 프록시를 사용하지 않을 것입니다."
 
 msgid "Parsing response from server..."
 msgstr ""
@@ -13251,7 +13285,7 @@ msgid "Open local files"
 msgstr ""
 
 msgid "Load imagery layers"
-msgstr ""
+msgstr "사진 레이어 불러오기"
 
 msgid "Change the selection"
 msgstr ""
@@ -13315,7 +13349,7 @@ msgid ""
 msgstr ""
 
 msgid "Remote imagery"
-msgstr ""
+msgstr "원격 사진"
 
 msgid "Remote Control has been asked to import data from the following URL:"
 msgstr ""
@@ -14132,13 +14166,13 @@ msgid "reserved"
 msgstr ""
 
 msgid "Outdated Java version"
-msgstr ""
+msgstr "오래된 Java 버전"
 
 msgid "Update Java"
-msgstr ""
+msgstr "Java 업데이트"
 
 msgid "You are running version {0} of Java."
-msgstr ""
+msgstr "Java의 버전 {0}를 실행하고 있습니다."
 
 msgid "April 2015"
 msgstr ""
@@ -14151,7 +14185,7 @@ msgstr ""
 msgid ""
 "JOSM will soon stop working with this version; we highly recommend you to "
 "update to Java {0}."
-msgstr ""
+msgstr "JOSM은 이 버전으로 작동을 곧 멈출 것입니다; Java {0}으로 업데이트할 것을 적극 권장합니다."
 
 msgid "Would you like to update now ?"
 msgstr ""
@@ -14433,6 +14467,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14441,6 +14483,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14674,7 +14720,7 @@ msgid "Landsat"
 msgstr ""
 
 msgid "Bing aerial imagery"
-msgstr ""
+msgstr "Bing 항공 사진"
 
 msgid "HDM (Humanitarian OpenStreetMap Team)"
 msgstr ""
@@ -14812,7 +14858,7 @@ msgid "LPI NSW Topographic Map"
 msgstr ""
 
 msgid "LPI NSW Imagery"
-msgstr ""
+msgstr "LPI NSW 사진"
 
 msgid "LPI NSW Administrative Boundaries Suburb"
 msgstr ""
@@ -14886,6 +14932,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14898,9 +14956,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14913,6 +14977,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15704,10 +15771,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15827,7 +15894,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16154,6 +16221,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16186,7 +16258,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16281,10 +16353,10 @@ msgid "Simple tool to tag house numbers."
 msgstr ""
 
 msgid "Generate Imagery XML bounds from a multipolygon"
-msgstr ""
+msgstr "여러 다각형으로부터 사진 XML 경계 생성"
 
 msgid "Export tiles from the imagery layer cache into the file system."
-msgstr ""
+msgstr "파일 시스템 안으로 사진 레이어 캐시에서 타일을 내보냅니다."
 
 msgid ""
 "Database of imagery offsets: share and aquire imagery offsets with one "
@@ -16306,6 +16378,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16326,12 +16403,16 @@ msgid ""
 "Provides Java Native Access (JNA) library. Not meant to be installed "
 "directly by users, but rather as a dependency for other plugins."
 msgstr ""
+"Java Native Access (JNA) 라이브러리를 제공합니다. 사용자에게 직접 설치되는 것이 아니라, 다른 플러그인을 위해 "
+"종속성으로 설치되는 것을 뜻합니다."
 
 msgid ""
 "Provides Java Topology Suite (JTS) library and related utilities. Not meant "
 "to be installed directly by users, but rather as a dependency for other "
 "plugins."
 msgstr ""
+"Java Topology Suite (JTS) 라이브러리와 관련된 유틸리티를 제공합니다. 사용자에게 직접 설치되는 것이 아니라, 다른 "
+"플러그인을 위해 종속성으로 설치되는 것을 뜻합니다."
 
 msgid ""
 "creates a channel digraph and checks a subset of channels if it is a "
@@ -16474,6 +16555,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -22391,7 +22477,7 @@ msgstr ""
 
 msgctxt "power"
 msgid "split"
-msgstr ""
+msgstr "분할"
 
 msgctxt "power"
 msgid "loop"
@@ -24816,6 +24902,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24924,38 +25013,77 @@ msgstr ""
 msgid "unknown jewish denomination"
 msgstr ""
 
-msgid "street name contains ss"
+msgid "street name contains ss"
+msgstr ""
+
+msgid "street name contains ß"
+msgstr ""
+
+msgid "{0} is unnecessary"
+msgstr ""
+
+msgid "unnecessary tag"
+msgstr ""
+
+msgid "{0} is unnecessary for {1}"
+msgstr ""
+
+msgid "{0} makes no sense"
+msgstr ""
+
+msgid "Nodes duplicating parent way tags"
+msgstr ""
+
+msgid ""
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
+msgstr ""
+
+msgid "wikipedia tag has an unknown language prefix"
+msgstr ""
+
+msgid "wikipedia tag format is deprecated"
+msgstr ""
+
+msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
-msgid "street name contains ß"
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
 msgstr ""
 
-msgid "{0} is unnecessary"
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
 msgstr ""
 
-msgid "unnecessary tag"
+msgid "{0} tag should not have URL-encoded values like ''%27''"
 msgstr ""
 
-msgid "{0} is unnecessary for {1}"
+msgid "wikipedia title should not start with a space after language code"
 msgstr ""
 
-msgid "{0} makes no sense"
+msgid "wikipedia title should not have ''{0}'' prefix"
 msgstr ""
 
-msgid "Nodes duplicating parent way tags"
+msgid "wikipedia page title should have first letter capitalized"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
 msgstr ""
 
-msgid "''wikipedia''=''language:page title''"
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
 msgstr ""
 
 msgid "Hide icons at low zoom"
@@ -25556,10 +25684,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25607,9 +25735,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25641,9 +25766,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25749,16 +25871,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25801,7 +25923,7 @@ msgid "Pauses the walk."
 msgstr ""
 
 msgid "Display hour when the picture was taken"
-msgstr ""
+msgstr "사진이 찍힌 때의 시간 표시"
 
 msgid "Use 24 hour format"
 msgstr ""
@@ -25812,6 +25934,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25880,6 +26005,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25901,6 +26032,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25927,6 +26064,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25941,6 +26081,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25983,18 +26126,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26491,6 +26622,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26524,6 +26658,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26611,12 +26750,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26717,9 +26882,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27296,14 +27458,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27334,13 +27488,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27352,7 +27503,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27364,22 +27518,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
 msgstr ""
 
-msgid "Match finder method"
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
+msgstr ""
+
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
+msgstr ""
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
+
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
 msgstr ""
 
-msgid "Threshold distance"
+msgid "Unioning"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid "Simple Example"
 msgstr ""
 
-msgid "Centroid distance"
+msgid "Advanced Example"
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27388,13 +27649,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27427,10 +27706,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
+msgstr ""
+
+msgid "Hausdorff"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -27513,7 +27807,7 @@ msgid ""
 msgstr ""
 
 msgid "Split area"
-msgstr ""
+msgstr "지역 분할"
 
 msgid "Splits an area by an untagged way."
 msgstr ""
@@ -28135,22 +28429,22 @@ msgid ""
 msgstr ""
 
 msgid "Imagery XML Files"
-msgstr ""
+msgstr "사진 XML 파일"
 
 msgid "Save Imagery XML file"
-msgstr ""
+msgstr "사진 XML 파일 저장"
 
 msgid "XML Imagery Bounds"
-msgstr ""
+msgstr "XML 사진 경계"
 
 msgid "Generate Imagery XML bounds for the selection"
-msgstr ""
+msgstr "선택에 사진 XML 경계 생성"
 
 msgid "edit bounds for selected defaults"
 msgstr ""
 
 msgid "Download imagery XML bounds"
-msgstr ""
+msgstr "사진 XML 경계 다운로드"
 
 msgid ""
 "Validating error in file {0}:\n"
@@ -28159,7 +28453,7 @@ msgid ""
 msgstr ""
 
 msgid "Open Imagery XML file"
-msgstr ""
+msgstr "사진 XML 파일 열기"
 
 msgid "Export tiles"
 msgstr ""
@@ -28236,7 +28530,7 @@ msgid "Deprecate Offset"
 msgstr ""
 
 msgid "Are you sure this imagery offset is wrong?"
-msgstr ""
+msgstr "이 사진 오프셋이 잘못되었습니까?"
 
 msgid "Are you sure this calibration geometry is aligned badly?"
 msgstr ""
@@ -28245,11 +28539,11 @@ msgid "Warning: deprecation is basically irreversible!"
 msgstr ""
 
 msgid "To store imagery offsets you must be a registered OSM user."
-msgstr ""
+msgstr "사진 오프셋을 저장하려면 등록된 OSM 사용자여야 합니다."
 
 msgid ""
 "Please enter the reason why you mark this imagery offset as deprecated"
-msgstr ""
+msgstr "왜 이 사진 오프셋이 사용되지 않는 것으로 표시하는지 이유를 입력해주세요"
 
 msgid ""
 "Please enter the reason why you mark this calibration geometry as deprecated"
@@ -28259,17 +28553,17 @@ msgid "Notifying the server of the deprecation..."
 msgstr ""
 
 msgid "Get Imagery Offset..."
-msgstr ""
+msgstr "사진 오프셋 얻기..."
 
 msgid "Download offsets for current imagery from a server"
-msgstr ""
+msgstr "서버에서 현재 사진의 오프셋 다운로드"
 
 msgid ""
 "No data for this region. Please adjust imagery layer and upload an offset."
 msgstr ""
 
 msgid "Loading imagery offsets..."
-msgstr ""
+msgstr "사진 오프셋을 불러오는 중..."
 
 msgid "Error processing XML response: {0}"
 msgstr ""
@@ -28278,7 +28572,7 @@ msgid "Offset"
 msgstr ""
 
 msgid "Imagery Offset Database"
-msgstr ""
+msgstr "사진 오프셋 데이터베이스"
 
 msgid "mm"
 msgstr ""
@@ -28325,10 +28619,10 @@ msgid "Reporting the offset..."
 msgstr ""
 
 msgid "An imagery offset of {0}"
-msgstr ""
+msgstr "{0}의 사진 오프셋"
 
 msgid "Imagery ID"
-msgstr ""
+msgstr "사진 ID"
 
 msgid "A calibration geometry of {0} nodes"
 msgstr ""
@@ -28352,7 +28646,7 @@ msgid "Unable to connect to the server"
 msgstr ""
 
 msgid "Store Imagery Offset..."
-msgstr ""
+msgstr "사진 오프셋 저장..."
 
 msgid ""
 "Upload an offset for current imagery (or calibration object geometry) to a "
@@ -28363,7 +28657,7 @@ msgid "Store calibration geometry"
 msgstr ""
 
 msgid "Store imagery offset"
-msgstr ""
+msgstr "사진 오프셋 저장"
 
 msgid ""
 "The selected object can be used as a calibration geometry. What do you "
@@ -28396,19 +28690,19 @@ msgid "This string should be 3 to 200 letters long."
 msgstr ""
 
 msgid "Adjust imagery"
-msgstr ""
+msgstr "사진 조절"
 
 msgid "Adjust the position of the selected imagery layer"
-msgstr ""
+msgstr "선택된 사진 레이어의 위치를 조절합니다"
 
 msgid "Please select the imagery layer to adjust."
-msgstr ""
+msgstr "조절할 사진 레이어를 선택해주세요."
 
 msgid "Start adjusting"
 msgstr ""
 
 msgid "There are currently no imagery layer to adjust."
-msgstr ""
+msgstr "현재 조절할 사진 레이어가 없습니다."
 
 msgid "No layers to adjust"
 msgstr ""
@@ -28458,6 +28752,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28709,9 +29030,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29016,7 +29334,7 @@ msgid ""
 msgstr ""
 
 msgid "Split way"
-msgstr ""
+msgstr "길 분할"
 
 msgid "Michigan Left"
 msgstr ""
@@ -29180,10 +29498,10 @@ msgid "Split this data by municipality (admin_level=8)."
 msgstr ""
 
 msgid "Split by sector"
-msgstr ""
+msgstr "부분으로 분할"
 
 msgid "Split this data by sector (admin_level=10)."
-msgstr ""
+msgstr "부분으로 이 데이터를 분할합니다. (admin_level=10)"
 
 msgid "Split by neighbourhood"
 msgstr ""
@@ -29953,9 +30271,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30895,7 +31210,7 @@ msgid "History reverter"
 msgstr ""
 
 msgid "Tool: Display objects history dialog"
-msgstr ""
+msgstr "도구: 개체 역사 대화 상자 표시"
 
 msgid "Preparing history data..."
 msgstr ""
@@ -30936,6 +31251,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31048,7 +31369,7 @@ msgid "Ignore oneways"
 msgstr ""
 
 msgid "Reverse route"
-msgstr ""
+msgstr "경로 뒤집기"
 
 msgid "Clear route"
 msgstr ""
@@ -31065,9 +31386,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
@@ -31256,10 +31574,10 @@ msgid "Delete nodes outside of downloaded data regions"
 msgstr ""
 
 msgid "No, abort"
-msgstr "아니오, 중단"
+msgstr "아니오, 중단합니다"
 
 msgid "Do you want to delete them anyway?"
-msgstr ""
+msgstr "어쨌든 그들을 삭제하시겠습니까?"
 
 msgid "Delete nodes outside of data regions?"
 msgstr ""
@@ -31508,7 +31826,7 @@ msgid "Reverse a Terrace"
 msgstr ""
 
 msgid "Cannot reverse!"
-msgstr ""
+msgstr "뒤집을 수 없습니다!"
 
 msgid "Reverse Terrace"
 msgstr ""
@@ -32256,10 +32574,10 @@ msgstr[0] ""
 msgstr[1] ""
 
 msgid "Do you want to save anyway?"
-msgstr ""
+msgstr "어쨌든 저장하시겠습니까?"
 
 msgid "Yes, save anyway"
-msgstr ""
+msgstr "예, 어쨌든 저장합니다"
 
 msgid "Save the turn restriction despite of errors and/or warnings"
 msgstr ""
@@ -32457,7 +32775,7 @@ msgid "Turn Restrictions"
 msgstr ""
 
 msgid "Display and manage turn restrictions in the current data set"
-msgstr ""
+msgstr "현재 데이터 집합에서 회전 제한을 표시하고 관리"
 
 msgid "Open an editor for the selected turn restriction"
 msgstr ""
@@ -32648,10 +32966,10 @@ msgid ""
 msgstr ""
 
 msgid "Split now"
-msgstr ""
+msgstr "지금 분할"
 
 msgid "Split the ways"
-msgstr ""
+msgstr "길 분할"
 
 msgid ""
 "This turn restriction uses the node <span class=\"object-name\">{0}</span> "
@@ -32753,13 +33071,13 @@ msgid ""
 msgstr ""
 
 msgid "Split Object"
-msgstr ""
+msgstr "개체 분할"
 
 msgid "Split an object at the selected nodes."
-msgstr ""
+msgstr "선택된 점에서 개체를 분할합니다."
 
 msgid "The current selection cannot be used for splitting."
-msgstr "현재 선택된 것으로는 Way를 쪼갤 수 없습니다."
+msgstr "현재 선택으로는 분할하는 데 사용될 수 없습니다."
 
 msgid "The selected way is not closed."
 msgstr ""
@@ -33216,7 +33534,7 @@ msgid "Sync"
 msgstr ""
 
 msgid "Unable to find JNA Java library!"
-msgstr ""
+msgstr "JNA Java 라이브러리를 찾을 수 없습니다!"
 
 msgid "Unable to find native libvlc library!"
 msgstr ""
@@ -33235,7 +33553,7 @@ msgstr ""
 
 msgid ""
 "Display a map that was previously scanned and uploaded to walking-papers.org"
-msgstr ""
+msgstr "이전에 스캔되고 walking-papers.org로 업로드된 지도 표시"
 
 msgid ""
 "Enter a walking-papers.org URL or ID (the bit after the ?id= in the URL)"
diff --git a/i18n/po/ku.po b/i18n/po/ku.po
index b4474f2..1a76c80 100644
--- a/i18n/po/ku.po
+++ b/i18n/po/ku.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2017-01-31 19:32+0000\n"
 "Last-Translator: Rokar ✌ <Unknown>\n"
 "Language-Team: Kurdish <ku at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:00+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:57+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
 msgstr ""
@@ -1387,7 +1387,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7917,6 +7917,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9231,6 +9237,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14446,6 +14455,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14454,6 +14471,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14899,6 +14920,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14911,9 +14944,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14926,6 +14965,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15717,10 +15759,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15840,7 +15882,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16167,6 +16209,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16199,7 +16246,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16319,6 +16366,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16487,6 +16539,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24829,6 +24886,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24959,18 +25019,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25569,10 +25668,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25620,9 +25719,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25654,9 +25750,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25762,16 +25855,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25825,6 +25918,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25893,6 +25989,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25914,6 +26016,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25940,6 +26048,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25954,6 +26065,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25996,18 +26110,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26504,6 +26606,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26537,6 +26642,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26624,12 +26734,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26730,9 +26866,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27309,14 +27442,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27347,13 +27472,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27365,7 +27487,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27377,22 +27502,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27401,13 +27633,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27440,10 +27690,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28471,6 +28736,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28722,9 +29014,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29966,9 +30255,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30949,6 +31235,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31078,9 +31370,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/ky.po b/i18n/po/ky.po
index bea412b..5b9aa14 100644
--- a/i18n/po/ky.po
+++ b/i18n/po/ky.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2012-12-18 02:36+0000\n"
 "Last-Translator: SimpleLeon <Unknown>\n"
 "Language-Team: Kirghiz <ky at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:59+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:56+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
 msgstr ""
@@ -1387,7 +1387,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7917,6 +7917,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9231,6 +9237,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14446,6 +14455,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14454,6 +14471,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14899,6 +14920,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14911,9 +14944,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14926,6 +14965,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15717,10 +15759,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15840,7 +15882,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16167,6 +16209,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16199,7 +16246,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16319,6 +16366,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16487,6 +16539,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24829,6 +24886,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24959,18 +25019,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25569,10 +25668,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25620,9 +25719,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25654,9 +25750,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25762,16 +25855,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25825,6 +25918,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25893,6 +25989,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25914,6 +26016,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25940,6 +26048,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25954,6 +26065,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25996,18 +26110,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26504,6 +26606,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26537,6 +26642,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26624,12 +26734,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26730,9 +26866,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27309,14 +27442,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27347,13 +27472,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27365,7 +27487,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27377,22 +27502,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27401,13 +27633,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27440,10 +27690,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28471,6 +28736,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28722,9 +29014,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29966,9 +30255,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30949,6 +31235,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31078,9 +31370,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/lb.po b/i18n/po/lb.po
index 90ac7da..370ffff 100644
--- a/i18n/po/lb.po
+++ b/i18n/po/lb.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2016-04-28 18:56+0000\n"
 "Last-Translator: Charel <ceilenbecker at gmail.com>\n"
 "Language-Team: Luxembourgish <lb at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:03+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:00+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
 msgstr "{0}:D''Optioun \"{1}\" ass net eendeiteg"
@@ -1387,7 +1387,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7917,6 +7917,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9231,6 +9237,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14446,6 +14455,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14454,6 +14471,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14899,6 +14920,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14911,9 +14944,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14926,6 +14965,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15717,10 +15759,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15840,7 +15882,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16167,6 +16209,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16199,7 +16246,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16319,6 +16366,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16487,6 +16539,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24829,6 +24886,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24959,18 +25019,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25569,10 +25668,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25620,9 +25719,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25654,9 +25750,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25762,16 +25855,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25825,6 +25918,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25893,6 +25989,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25914,6 +26016,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25940,6 +26048,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25954,6 +26065,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25996,18 +26110,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26504,6 +26606,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26537,6 +26642,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26624,12 +26734,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26730,9 +26866,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27309,14 +27442,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27347,13 +27472,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27365,7 +27487,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27377,22 +27502,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27401,13 +27633,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27440,10 +27690,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28471,6 +28736,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28722,9 +29014,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29966,9 +30255,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30949,6 +31235,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31078,9 +31370,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/lo.po b/i18n/po/lo.po
index 5906ea5..8d46c8f 100644
--- a/i18n/po/lo.po
+++ b/i18n/po/lo.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2009-09-15 10:06+0000\n"
 "Last-Translator: Anousone <Unknown>\n"
 "Language-Team: Lao <lo at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:01+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:58+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1388,7 +1388,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7918,6 +7918,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9232,6 +9238,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14447,6 +14456,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14455,6 +14472,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14900,6 +14921,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14912,9 +14945,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14927,6 +14966,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15718,10 +15760,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15841,7 +15883,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16168,6 +16210,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16200,7 +16247,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16320,6 +16367,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16488,6 +16540,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24830,6 +24887,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24960,18 +25020,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25570,10 +25669,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25621,9 +25720,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25655,9 +25751,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25763,16 +25856,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25826,6 +25919,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25894,6 +25990,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25915,6 +26017,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25941,6 +26049,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25955,6 +26066,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25997,18 +26111,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26505,6 +26607,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26538,6 +26643,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26625,12 +26735,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26731,9 +26867,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27310,14 +27443,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27348,13 +27473,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27366,7 +27488,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27378,22 +27503,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27402,13 +27634,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27441,10 +27691,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28472,6 +28737,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28723,9 +29015,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29967,9 +30256,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30950,6 +31236,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31079,9 +31371,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/lt.po b/i18n/po/lt.po
index f760589..92a21e6 100644
--- a/i18n/po/lt.po
+++ b/i18n/po/lt.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
-"PO-Revision-Date: 2017-02-01 19:13+0000\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
+"PO-Revision-Date: 2017-03-04 05:45+0000\n"
 "Last-Translator: Aurimas Fišeras <Unknown>\n"
 "Language-Team: Lithuanian <lt at li.org>\n"
 "MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
 "(n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:02+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:59+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: lt\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1497,8 +1497,8 @@ msgstr "Nupiešti linijas tarp naujų gps taškų"
 msgid "Toggles the global setting ''{0}''."
 msgstr "Perjungia bendrą nustatymą „{0}“"
 
-msgid "Encourage/discourage upload"
-msgstr "Skatinti/neskatinti įkėlimą"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "Atjungti kelius"
@@ -8571,6 +8571,12 @@ msgstr ""
 "paleidus JOSM.<br>Galite jį atverti patys iš Failo meniu arba įrankių "
 "juostos.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -10078,6 +10084,9 @@ msgstr "API versija: {0}"
 msgid "Upload is discouraged"
 msgstr "Siūloma neįkelti"
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Konvertuoti į GPX sluoksnį"
 
@@ -11699,7 +11708,7 @@ msgid "Draw segment order numbers"
 msgstr "Piešti segmentų tvarkos numerius"
 
 msgid "Draw segment order numbers on selected way"
-msgstr ""
+msgstr "Piešti segmentų tvarkos numerius pažymėtame kelyje"
 
 msgid "Draw boundaries of downloaded data"
 msgstr "Piešti atsiųstų duomenų ribas"
@@ -11794,7 +11803,7 @@ msgid "OSM Data"
 msgstr "OSM duomenys"
 
 msgid "Auto"
-msgstr "Auto"
+msgstr "Automatika"
 
 msgctxt "gpx_field"
 msgid "Name"
@@ -11865,34 +11874,34 @@ msgstr "Pėstieji"
 
 msgctxt "Heat map"
 msgid "User Normal"
-msgstr ""
+msgstr "Naudotojo normali"
 
 msgctxt "Heat map"
 msgid "User Light"
-msgstr ""
+msgstr "Naudotojo šviesi"
 
 msgctxt "Heat map"
 msgid "Traffic Lights"
-msgstr ""
+msgstr "Šviesoforas"
 
 msgctxt "Heat map"
 msgid "Inferno"
-msgstr ""
+msgstr "Pragaras"
 
 msgctxt "Heat map"
 msgid "Viridis"
-msgstr ""
+msgstr "Žalia"
 
 msgctxt "Heat map"
 msgid "Wood"
-msgstr ""
+msgstr "Mediena"
 
 msgctxt "Heat map"
 msgid "Heat"
 msgstr "Intensyvumas"
 
 msgid "Use points instead of lines for heat map"
-msgstr ""
+msgstr "Naudoti taškus vietoje linijų intensyvumo žemėlapiui"
 
 msgid "Create markers when reading GPX"
 msgstr "Sukurti žymeklius skaitant GPX"
@@ -11907,7 +11916,7 @@ msgid "Smooth GPX graphics (antialiasing)"
 msgstr "Lyginti GPX grafiką (glodinimas)"
 
 msgid "Draw with Opacity (alpha blending) "
-msgstr ""
+msgstr "Piešti su permatomumu (alfa perėjimas) "
 
 msgid ""
 "Automatically make a marker layer from any waypoints when opening a GPX "
@@ -11983,6 +11992,8 @@ msgid ""
 "Apply dynamic alpha-blending and adjust width based on zoom level for all "
 "GPX lines."
 msgstr ""
+"Taikyti dinaminį alfa perėjimą ir reguliuoti visų GPX linijų plotį pagal "
+"mastelio lygį."
 
 msgid ""
 "All points and track segments will have the same color. Can be customized in "
@@ -12023,20 +12034,21 @@ msgid "Track and Point Coloring"
 msgstr "Pėdsako ir taško spalvos"
 
 msgid "Overlay gain adjustment"
-msgstr ""
+msgstr "Perdangos stiprinimo reguliavimas"
 
 msgid "Lower limit of visibility"
-msgstr ""
+msgstr "Apatinė matomumo riba"
 
 msgid "Adjust the gain of overlay blending."
-msgstr ""
+msgstr "Reguliuoti perdangos perėjimo stiprinimą."
 
 msgid "Draw all GPX traces that exceed this threshold."
-msgstr ""
+msgstr "Piešti visus GPX pėdsakus, kurie viršija šį slenkstį."
 
 msgid ""
 "Render engine uses points with simulated position error instead of lines. "
 msgstr ""
+"Atvaizdavimo variklis naudos taškus su modeliuota pozicija vietoje linijų. "
 
 msgid "Colors points and track segments by data limits."
 msgstr "Spalvina taškus ir pėdsako segmentus pagal duomenų limitus."
@@ -12137,7 +12149,7 @@ msgid "Language"
 msgstr "Kalba"
 
 msgid "Default (Auto determined)"
-msgstr "Numatytoji( Automatiškai nustatyta)"
+msgstr "Numatytoji (Automatiškai nustatyta)"
 
 msgid "Add Imagery URL"
 msgstr "Pridėti vaizdų URL"
@@ -12456,8 +12468,8 @@ msgstr "JOSM numatytasis (MapCSS)"
 msgid ""
 "Internal style to be used as base for runtime switchable overlay styles"
 msgstr ""
-"Vidinis stilius, naudojamas kaip pagrindas perjungiamiems veikiantiems "
-"padengčių stiliams"
+"Vidinis stilius, naudojamas kaip pagrindas veikiantiems perjungiamiems  "
+"perdangų stiliams"
 
 msgid "Potlatch 2"
 msgstr "Potlatch 2"
@@ -15896,12 +15908,24 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "gyvenamasis"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "krūmai"
 
 msgctxt "natural"
 msgid "wood"
+msgstr "medžiai"
+
+msgctxt "natural"
+msgid "grassland"
 msgstr ""
 
 msgctxt "Relation type"
@@ -16188,7 +16212,7 @@ msgid "Cambodia, Laos, Thailand, Vietnam, Myanmar bilingual"
 msgstr ""
 
 msgid "OpenPT Map (overlay)"
-msgstr "OpenPT žemėlapis (padengtis)"
+msgstr "OpenPT žemėlapis (perdanga)"
 
 msgid "Strava cycling heatmap"
 msgstr "Strava dviračių intensyvumo žemėlapis"
@@ -16200,7 +16224,7 @@ msgid "Strava cycling and running heatmap"
 msgstr "Strava dviračių ir bėgimo intensyvumo žemėlapis"
 
 msgid "Locator Overlay"
-msgstr "Locator padengtis"
+msgstr "Locator perdanga"
 
 msgid "QA No Address"
 msgstr ""
@@ -16349,6 +16373,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -16361,9 +16397,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr "URBIS 2009 aeronuotraukos"
 
@@ -16376,6 +16418,9 @@ msgstr "URBIS 2014 aeronuotraukos"
 msgid "URBIS 2015 aerial imagery"
 msgstr "URBIS 2015 aeronuotraukos"
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr "SPW(allonie) PICC numerinės nuotraukos"
 
@@ -16446,7 +16491,7 @@ msgid "Kelowna 2012"
 msgstr "Kelowna 2012"
 
 msgid "Kelowna Roads overlay"
-msgstr "Kelowna kelių padengtis"
+msgstr "Kelowna kelių perdanga"
 
 msgid "imagico.de OSM images for mapping: Eastern Devon Island coast"
 msgstr ""
@@ -17171,10 +17216,10 @@ msgstr "Stadt Zürich Übersichtsplan (Strassen, Gebäude, Hausnummer)"
 msgid "Stadt Zürich Luftbild 2011"
 msgstr "Stadt Zürich Luftbild 2011"
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -17256,7 +17301,7 @@ msgid "USGS Large Scale Imagery"
 msgstr "USGS Large Scale Imagery"
 
 msgid "TIGER 2012 Roads Overlay"
-msgstr "TIGER 2012 kelių padengtis"
+msgstr "TIGER 2012 kelių perdanga"
 
 msgid "New & Misaligned TIGER Roads (2015)"
 msgstr ""
@@ -17294,7 +17339,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -17621,6 +17666,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -17653,7 +17703,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -17779,6 +17829,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr "Importuoti vektorinę grafiką (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -17955,6 +18010,11 @@ msgid "Plugin for reverting changesets"
 msgstr "Papildinys pakeitimų grąžinimui"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24980,7 +25040,7 @@ msgid "Wood"
 msgstr "Medžiai"
 
 msgid "Woodland where timber production does not dominate use."
-msgstr ""
+msgstr "Miškinga vietovė, kurioje medienos gamyba nedominuoja."
 
 msgid "Forest"
 msgstr "Miškas"
@@ -25023,6 +25083,8 @@ msgid ""
 "Where vegetation is dominated by grasses (Poaceae) and other herbaceous (non-"
 "woody) plants. Excludes cultivated areas and wetlands."
 msgstr ""
+"Kur dominuoja žolės (Migliniai) ir kiti žoliniai (nesumedėję) augalai. "
+"Neįtraukia dirbamų plotų ir pelkių."
 
 msgid "pampas"
 msgstr ""
@@ -25081,6 +25143,9 @@ msgid ""
 "free-draining infertile, acidic soils, and is characterised by open, low-"
 "growing woody vegetation."
 msgstr ""
+"Skurdi, žemai apaugusi nedirbama žemė su krūmyniniu arealu,  dažniausiai "
+"randamu laisvai nutekančiame, nederlingame, rūgštiniame dirvožemyje,  "
+"apibūdinamu atvira, žemai augančia sumedėjusia augalija."
 
 msgid "Sand"
 msgstr "Smėlis"
@@ -26311,6 +26376,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr "sutrumpintas gatvės pavadinimas"
 
@@ -26441,18 +26509,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
-msgstr "pasenęs Vikipedijos žymos formatas"
+msgid "wikipedia tag format is deprecated"
+msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr "Slėpti piktogramas mažai priartinus"
 
@@ -27059,10 +27166,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
-msgstr "Kelio ženklo šrifto pozicijoje „{0}“ neteisingas formatas"
+msgid "Mapillary object layer"
+msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -27110,9 +27217,6 @@ msgstr "Sujungimo veiksena"
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -27144,9 +27248,6 @@ msgstr "Išsiųsti nuotraukas."
 msgid "Walk mode"
 msgstr "Ėjimo veiksena"
 
-msgid "Start walk mode"
-msgstr "Pradėti ėjimo veikseną"
-
 msgid "Zoom to selected image"
 msgstr "Rodyti pažymėtą nuotrauką"
 
@@ -27252,18 +27353,18 @@ msgstr "Mapillary istorija"
 msgid "Open Mapillary history dialog"
 msgstr "Atverti Mapillary istorijos dialogo langą"
 
+msgid "No image selected"
+msgstr ""
+
+msgid "Press \"{0}\" to download images"
+msgstr ""
+
 msgid "Mapillary picture"
 msgstr "Mapillary nuotrauka"
 
 msgid "Open Mapillary window"
 msgstr "Atverti Mapillary langą"
 
-msgid "Mapillary dialog"
-msgstr "Mapillary dialogo langas"
-
-msgid "Open Mapillary main dialog"
-msgstr "Atverti Mapillary pagrindinį dialogo langą"
-
 msgid "Next picture"
 msgstr "Kita nuotrauka"
 
@@ -27315,6 +27416,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -27383,6 +27487,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -27404,6 +27514,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -27430,6 +27546,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -27444,6 +27563,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -27486,18 +27608,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -28006,6 +28116,9 @@ msgstr "Pastatas:"
 msgid "Tags:"
 msgstr "Žymos:"
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "Vardas:"
 
@@ -28039,6 +28152,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -28126,12 +28244,38 @@ msgstr "sulieti taškus"
 msgid "Merge nodes with existing nodes"
 msgstr "Sulieti taškus su egzistuojančiais taškais"
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr "Derinimas"
 
 msgid "Debugging mode will write images for each processing step."
 msgstr "Derinimo veiksena įrašys vaizdus kiekvienam apdorojimo žingsniui."
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -28233,9 +28377,6 @@ msgstr "Nerasta adresų taškų pastatų viduje"
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr "Pridėti adresą"
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -28823,14 +28964,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -28861,13 +28994,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -28879,8 +29009,11 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
-msgstr "Nepavyko pakeiti geometrijos."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
+msgstr ""
 
 msgid "Zoom to selected primitive(s)"
 msgstr ""
@@ -28891,22 +29024,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr "Nepavyko pakeiti geometrijos."
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Masė"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
 msgstr ""
 
-msgid "Match finder method"
+msgid "Angle Histogram. Bins: "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Centroid distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
+
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -28915,13 +29155,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Pakeisti geometriją"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -28954,10 +29212,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Centroid"
+msgstr ""
+
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -30001,6 +30274,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -30252,9 +30552,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr "Pakeisti geometriją"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -31514,9 +31811,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -32504,6 +32798,12 @@ msgstr ""
 "Įspėjimas: nepalaikomas pabaigos elementas „{0}“ pakeitimo turinio "
 "pozicijoje ({1},{2}). Praleidžiama."
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr "Kelio ženklų papildinys"
 
@@ -32633,9 +32933,6 @@ msgstr "Konfigūruoti maršruto parinkimo nuostatas."
 msgid "Speed (Km/h)"
 msgstr "Greitis (Km/h)"
 
-msgid "Weight"
-msgstr "Masė"
-
 msgid "Enter weight values"
 msgstr "Įveskite svorių reikšmes"
 
@@ -32809,7 +33106,7 @@ msgid "Align all buildings"
 msgstr ""
 
 msgid "Delete overlay"
-msgstr ""
+msgstr "Pašalinti perdangą"
 
 msgid "Simplify Area"
 msgstr "Supaprastinti Sritį"
diff --git a/i18n/po/lv.po b/i18n/po/lv.po
index 67f02c1..4e56a2f 100644
--- a/i18n/po/lv.po
+++ b/i18n/po/lv.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2012-10-03 22:16+0000\n"
 "Last-Translator: Dirk Stöcker <launchpad at dstoecker.de>\n"
 "Language-Team: Latvian <lv at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:01+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:59+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: lv\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1399,7 +1399,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7928,6 +7928,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9242,6 +9248,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14461,6 +14470,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14469,6 +14486,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14914,6 +14935,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14926,9 +14959,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14941,6 +14980,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15732,10 +15774,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15855,7 +15897,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16182,6 +16224,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16214,7 +16261,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16334,6 +16381,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16502,6 +16554,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24844,6 +24901,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24974,18 +25034,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25584,10 +25683,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25635,9 +25734,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25669,9 +25765,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25777,16 +25870,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25840,6 +25933,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25908,6 +26004,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25929,6 +26031,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25955,6 +26063,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25969,6 +26080,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26011,18 +26125,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26519,6 +26621,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26552,6 +26657,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26639,12 +26749,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26745,9 +26881,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27324,14 +27457,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27362,13 +27487,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27380,7 +27502,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27392,22 +27517,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27416,13 +27648,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27455,10 +27705,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28486,6 +28751,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28737,9 +29029,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29981,9 +30270,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30964,6 +31250,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31093,9 +31385,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/mk.po b/i18n/po/mk.po
index fd36221..313f369 100644
--- a/i18n/po/mk.po
+++ b/i18n/po/mk.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2013-05-11 04:37+0000\n"
 "Last-Translator: Bojan Jankuloski <bojan.jankuloski at gmail.com>\n"
 "Language-Team: Macedonian <mk at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:03+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:00+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: mk\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1391,7 +1391,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7921,6 +7921,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9235,6 +9241,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14451,6 +14460,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14459,6 +14476,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14904,6 +14925,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14916,9 +14949,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14931,6 +14970,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15722,10 +15764,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15845,7 +15887,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16172,6 +16214,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16204,7 +16251,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16324,6 +16371,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16492,6 +16544,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24834,6 +24891,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24964,18 +25024,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25574,10 +25673,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25625,9 +25724,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25659,9 +25755,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25767,16 +25860,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25830,6 +25923,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25898,6 +25994,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25919,6 +26021,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25945,6 +26053,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25959,6 +26070,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26001,18 +26115,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26509,6 +26611,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26542,6 +26647,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26629,12 +26739,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26735,9 +26871,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27314,14 +27447,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27352,13 +27477,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27370,7 +27492,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27382,22 +27507,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27406,13 +27638,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27445,10 +27695,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28476,6 +28741,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28727,9 +29019,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29971,9 +30260,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30954,6 +31240,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31083,9 +31375,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/mr.po b/i18n/po/mr.po
index 86f641f..4d27c21 100644
--- a/i18n/po/mr.po
+++ b/i18n/po/mr.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2015-05-24 23:45+0000\n"
 "Last-Translator: Singleton <singleton47+ubuntuone at live.com>\n"
 "Language-Team: Marathi <mr at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:04+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:01+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: mr\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1410,7 +1410,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7946,6 +7946,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9260,6 +9266,9 @@ msgstr "API आवृत्ती: {0}"
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14486,6 +14495,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14494,6 +14511,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14939,6 +14960,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14951,9 +14984,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14966,6 +15005,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15757,10 +15799,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15880,7 +15922,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16207,6 +16249,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16239,7 +16286,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16359,6 +16406,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16527,6 +16579,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24869,6 +24926,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24999,18 +25059,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25609,10 +25708,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25660,9 +25759,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25694,9 +25790,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25802,16 +25895,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25865,6 +25958,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25933,6 +26029,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25954,6 +26056,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25980,6 +26088,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25994,6 +26105,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26036,18 +26150,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26544,6 +26646,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26577,6 +26682,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26664,12 +26774,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26770,9 +26906,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27349,14 +27482,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27387,13 +27512,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27405,7 +27527,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27417,22 +27542,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27441,13 +27673,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27480,10 +27730,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28511,6 +28776,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28762,9 +29054,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -30006,9 +30295,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30989,6 +31275,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31118,9 +31410,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/ms.po b/i18n/po/ms.po
index afa4ac4..d2874b1 100644
--- a/i18n/po/ms.po
+++ b/i18n/po/ms.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2011-12-11 22:14+0000\n"
 "Last-Translator: abuyop <Unknown>\n"
 "Language-Team: Malay <ms at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:05+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:01+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: ms\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1388,7 +1388,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7918,6 +7918,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9232,6 +9238,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14447,6 +14456,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14455,6 +14472,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14900,6 +14921,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14912,9 +14945,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14927,6 +14966,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15718,10 +15760,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15841,7 +15883,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16168,6 +16210,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16200,7 +16247,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16320,6 +16367,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16488,6 +16540,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24830,6 +24887,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24960,18 +25020,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25570,10 +25669,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25621,9 +25720,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25655,9 +25751,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25763,16 +25856,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25826,6 +25919,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25894,6 +25990,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25915,6 +26017,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25941,6 +26049,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25955,6 +26066,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25997,18 +26111,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26505,6 +26607,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26538,6 +26643,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26625,12 +26735,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26731,9 +26867,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27310,14 +27443,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27348,13 +27473,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27366,7 +27488,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27378,22 +27503,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27402,13 +27634,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27441,10 +27691,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28472,6 +28737,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28723,9 +29015,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29967,9 +30256,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30950,6 +31236,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31079,9 +31371,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/nb.po b/i18n/po/nb.po
index ff4c8c0..5ec6e85 100644
--- a/i18n/po/nb.po
+++ b/i18n/po/nb.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2017-02-21 09:17+0000\n"
 "Last-Translator: Syver Stensholt <sssandum at gmail.com>\n"
 "Language-Team: Norwegian Bokmal <nb at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:07+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:03+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: nb\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1438,7 +1438,7 @@ msgstr "Trekk linjer mellom GPS-punkt."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Slår av/på global innstilling «{0}»."
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -8049,6 +8049,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9389,6 +9395,9 @@ msgstr "API versjon: {0}"
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Konvertér til GPX-lag"
 
@@ -14677,6 +14686,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14685,6 +14702,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -15130,6 +15151,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -15142,9 +15175,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -15157,6 +15196,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15948,10 +15990,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -16071,7 +16113,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16398,6 +16440,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16430,7 +16477,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16556,6 +16603,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16731,6 +16783,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -25085,6 +25142,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -25215,18 +25275,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25827,10 +25926,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25878,9 +25977,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25912,9 +26008,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -26020,16 +26113,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -26083,6 +26176,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -26151,6 +26247,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -26172,6 +26274,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -26198,6 +26306,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -26212,6 +26323,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26254,18 +26368,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26762,6 +26864,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26795,6 +26900,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26882,12 +26992,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26988,9 +27124,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27588,14 +27721,6 @@ msgstr "Fjern valgte palett fra lista."
 msgid "Color Schemes"
 msgstr "Farge Palett"
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27626,13 +27751,10 @@ msgstr "Konfigurer"
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27644,7 +27766,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27656,22 +27781,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Vekt"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27680,13 +27912,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27719,10 +27969,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28753,6 +29018,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -29004,9 +29296,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -30259,9 +30548,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -31242,6 +31528,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31371,9 +31663,6 @@ msgstr "Oppsett for Ruteplanlegger"
 msgid "Speed (Km/h)"
 msgstr "Fart (km/t)"
 
-msgid "Weight"
-msgstr "Vekt"
-
 msgid "Enter weight values"
 msgstr "Gi verdier for vekting"
 
diff --git a/i18n/po/nds.po b/i18n/po/nds.po
index 13f7369..0f3f435 100644
--- a/i18n/po/nds.po
+++ b/i18n/po/nds.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2009-11-29 09:01+0000\n"
 "Last-Translator: Dirk Stöcker <launchpad at dstoecker.de>\n"
 "Language-Team: German, Low <nds at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:05+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:02+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1388,7 +1388,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7917,6 +7917,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9231,6 +9237,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14446,6 +14455,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14454,6 +14471,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14899,6 +14920,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14911,9 +14944,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14926,6 +14965,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15717,10 +15759,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15840,7 +15882,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16167,6 +16209,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16199,7 +16246,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16319,6 +16366,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16487,6 +16539,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24829,6 +24886,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24959,18 +25019,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25569,10 +25668,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25620,9 +25719,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25654,9 +25750,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25762,16 +25855,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25825,6 +25918,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25893,6 +25989,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25914,6 +26016,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25940,6 +26048,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25954,6 +26065,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25996,18 +26110,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26504,6 +26606,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26537,6 +26642,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26624,12 +26734,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26730,9 +26866,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27309,14 +27442,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27347,13 +27472,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27365,7 +27487,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27377,22 +27502,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27401,13 +27633,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27440,10 +27690,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28471,6 +28736,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28722,9 +29014,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29966,9 +30255,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30949,6 +31235,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31078,9 +31370,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/nl.po b/i18n/po/nl.po
index 1e818b0..d9e6f1b 100644
--- a/i18n/po/nl.po
+++ b/i18n/po/nl.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2017-02-27 19:58+0000\n"
 "Last-Translator: korst <Unknown>\n"
 "Language-Team: Dutch\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-28 04:34+0000\n"
-"X-Generator: Launchpad (build 18329)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:43+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: nl\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1531,8 +1531,8 @@ msgstr "Teken lijnen tussen ruwe GPS-punten."
 msgid "Toggles the global setting ''{0}''."
 msgstr "De algemene instelling \"{0}\" in-/uitschakelen."
 
-msgid "Encourage/discourage upload"
-msgstr "Uploaden aan- of ontmoedigen"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "Wegen losmaken"
@@ -8711,6 +8711,12 @@ msgstr ""
 "keer als JOSM wordt gestart.<br>U kunt het handmatig openen in het menu "
 "Bestand of via de werkbalk.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -10227,6 +10233,9 @@ msgstr "API-versie: {0}"
 msgid "Upload is discouraged"
 msgstr "Uploaden wordt afgeraden"
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Naar GPX-laag omzetten"
 
@@ -16225,6 +16234,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "woongebied"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "ruig land"
@@ -16233,6 +16250,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr "hout"
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "associatedStreet"
@@ -16678,6 +16699,18 @@ msgstr "VoGIS: Höhen und Gelände"
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr "AGIV Vlaanderen meest recente luchtfoto''s"
 
@@ -16690,9 +16723,15 @@ msgstr "AGIV Vlaanderen GRB"
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr numerieke afbeeldingen (2013)"
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr "URBISnl numerieke afbeeldingen (2013)"
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr "URBIS 2009 luchtfoto''s"
 
@@ -16705,6 +16744,9 @@ msgstr "URBIS 2014 luchtfoto''s"
 msgid "URBIS 2015 aerial imagery"
 msgstr "URBIS 2015 luchtfoto''s"
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr "SPW(allonie) PICC numerieke afbeeldingen"
 
@@ -17521,11 +17563,11 @@ msgstr "Stad Zürich Overzichtskaart (Straten, gebouwen, huisnummer)"
 msgid "Stadt Zürich Luftbild 2011"
 msgstr "Stad Zürich Luchtfoto 2011"
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
-msgstr "Luchtfoto''s kanton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
+msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
-msgstr "Luchtfoto''s kanton Solothurn Infrarood (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
+msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
 msgstr "Kanton Génève 5cm (SITG 2011)"
@@ -17647,8 +17689,8 @@ msgstr "Texas Orthophoto"
 msgid "Philadelphia 2015 Imagery"
 msgstr "Philadelphia 2015 Imagery"
 
-msgid "MD 2014 6 Inch Aerial Imagery"
-msgstr "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
+msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
 msgstr "MD Three Inch Aerial Imagery"
@@ -17989,6 +18031,11 @@ msgstr ""
 "achtergrondlagen te vereenvoudigen. Geoptimaliseerd voor basemap.at."
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -18036,10 +18083,8 @@ msgstr ""
 "Implementeert een opdrachtregel end maakt het u mogelijk uw opdrachten te "
 "maken. Zie koppeling voor standaard opdrachten (boog, cirkel etc.)"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
-"(Waarschuwing: Experimenteel!) Gebreedschap voor samenvoegen (samensmelten) "
-"van gegevens."
 
 msgid "Downloads new data when you pan/zoom"
 msgstr "Nieuwe gegevens downloaden als u pant/zoomt"
@@ -18191,6 +18236,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr "Importeren van vectorafbeeldingen (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 "Deze plug-in vereenvoudigt het in kaart brengen en bewerken van binnen "
@@ -18419,6 +18469,11 @@ msgid "Plugin for reverting changesets"
 msgstr "Plug-in voor het omdraaien van wijzigingensets"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -26900,6 +26955,9 @@ msgstr ""
 "{0} is de tag voor de lineaire waterweg. Gebruik in plaats daarvan {1} + {2} "
 "om het watergebied te taggen."
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr "afgekorte straatnaam"
 
@@ -27042,20 +27100,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr "Knopen die tags voor \"ouder\"-weg dupliceren"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
-msgstr ""
-"geen taal voor wikipedia opgegeven, gebruik ''wikipedia''=''language:page "
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
 "title''"
+msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
-msgstr "onbekend voorvoegsel voor taal in tag wikipedia"
+msgid "wikipedia tag has an unknown language prefix"
+msgstr ""
 
-msgid "deprecated format for wikipedia tag"
-msgstr "vervallen opmaak voor tag wikipedia"
+msgid "wikipedia tag format is deprecated"
+msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr "''wikipedia''=''language:page title''"
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr "Pictogrammen bij laag zoomen verbergen"
 
@@ -27690,11 +27785,11 @@ msgstr "Totaal aantal afbeeldingen:"
 msgid "images"
 msgstr "afbeeldingen"
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
-msgstr "Lettertype van verkeersteken op ''{0}'' heeft verkeerde opmaak"
+msgid "Mapillary object layer"
+msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
-msgstr "Kon bestand voor lettertype niet lezen vanaf ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
+msgstr ""
 
 msgid "Mapillary"
 msgstr "Mapillary"
@@ -27741,9 +27836,6 @@ msgstr "Modus Samenvoegen"
 msgid "Join/unjoin pictures"
 msgstr "Afbeeldingen samenvoegen/van elkaar losmaken"
 
-msgid "Join Mapillary pictures"
-msgstr "Afbeeldingen van Mapillary samenvoegen"
-
 msgid "Submit changeset"
 msgstr "Wijzigingenset indienen"
 
@@ -27780,9 +27872,6 @@ msgstr "Afbeeldingen uploaden."
 msgid "Walk mode"
 msgstr "Modus Wandeling"
 
-msgid "Start walk mode"
-msgstr "Modus Wandeling starten"
-
 msgid "Zoom to selected image"
 msgstr "Zoom naar geselecteerde afbeelding"
 
@@ -27888,18 +27977,18 @@ msgstr "Geschiedenis Mapillary"
 msgid "Open Mapillary history dialog"
 msgstr "Dialoogvenster Geschiedenis van Mapillary openen"
 
+msgid "No image selected"
+msgstr "Geen afbeelding geselecteerd"
+
+msgid "Press \"{0}\" to download images"
+msgstr ""
+
 msgid "Mapillary picture"
 msgstr "afbeelding van Mapillary"
 
 msgid "Open Mapillary window"
 msgstr "Venster van Mapillary openen"
 
-msgid "Mapillary dialog"
-msgstr "dialoogvenster Mapillary"
-
-msgid "Open Mapillary main dialog"
-msgstr "Hoofddialoogvenster van Mapillary openen"
-
 msgid "Next picture"
 msgstr "Volgende afbeelding"
 
@@ -27952,6 +28041,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr "Voorbeeld van afbeeldingen bij bevinden boven pictogram"
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr "Modus Downloaden"
 
@@ -28029,6 +28121,12 @@ msgstr ""
 "Geeft gedetailleerde informatie weer over de momenteel geselecteerde "
 "afbeelding in Mapillary"
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr "Tag voor Mapillary toevoegen"
 
@@ -28050,6 +28148,12 @@ msgstr "reeks heeft geen sleutel"
 msgid "Could not open the URL {0} in a browser"
 msgstr "Kon de URL {0} niet openen in een browser"
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] "{0} afbeelding verwijderd"
@@ -28076,6 +28180,9 @@ msgstr[1] "{0} afbeeldingen gedraaid"
 msgid "2 images unjoined"
 msgstr "2 afbeeldingen van elkaar losgemaakt"
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr "alles in het zichtbare gebied"
 
@@ -28092,6 +28199,9 @@ msgstr ""
 "Het gedownloade gebied van OSM is te groot. Modus Downloaden is gewijzigd "
 "naar het gebied van OSM totdat de laag opnieuw wordt gestart."
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr "Downloaden"
 
@@ -28134,18 +28244,6 @@ msgstr "Niet ingelogd bij Mapillary"
 msgid "Uploading: {0}"
 msgstr "Uploaden: {0}"
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr "De afbeeldingssleutel ''{0}'' is ongeldig!"
-
-msgid "The image key must not be null here!"
-msgstr "De sleutel voor de afbeelding mag hier niet null zijn!"
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr "De sleutel voor de reeks ''{0}'' is ongeldig!"
-
-msgid "The sequence key must not be null here!"
-msgstr "De sleutel voor de reeks mag hier geen null zijn!"
-
 msgid "NanoLog"
 msgstr "NanoLog"
 
@@ -28756,6 +28854,9 @@ msgstr "Gebouw:"
 msgid "Tags:"
 msgstr "Tags:"
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "Naam:"
 
@@ -28790,6 +28891,11 @@ msgstr "Proberen om een gebied te detecteren op:"
 msgid "Created area"
 msgstr "Gemaakt gebied"
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr "Niet in staat een polygoon te detecteren waar u heeft geklikt."
 
@@ -28893,12 +28999,38 @@ msgstr "knopen samenvoegen"
 msgid "Merge nodes with existing nodes"
 msgstr "Knopen smaenvoegen met bestaande knopen"
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr "Foutopsporing"
 
 msgid "Debugging mode will write images for each processing step."
 msgstr "Modus Foutopsporing zal afbeeldingen schrijven voor elke processtap"
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr "Veralgemeniseren van gebouwen"
 
@@ -29003,9 +29135,6 @@ msgstr "Geen adresknopen binnen gebouwen gevonden"
 msgid "on polygon"
 msgstr "op polygoon"
 
-msgid "Add address"
-msgstr "Adres toevoegen"
-
 msgid "Helping tool for tag address"
 msgstr "Hulpgereedschap om adressen te taggen"
 
@@ -29650,14 +29779,6 @@ msgstr "Verwijder het geselecteerde schema uit de lijst."
 msgid "Color Schemes"
 msgstr "Kleurenschema''s"
 
-msgid "Conflate object pair"
-msgstr "Objectpaar samenvoegen"
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] "{0} object toegevoegd aan onderwerplaag"
-msgstr[1] "{0} objecten toegevoegd aan onderwerplaag"
-
 msgid "Conflation"
 msgstr "Samenvoeging"
 
@@ -29688,15 +29809,12 @@ msgstr "Configureren"
 msgid "Configure conflation options"
 msgstr "Opties voor samenvoegen configureren"
 
-msgid "Delete {0} conflation matches"
-msgstr "{0} overeenkomsten voor samenvoegen verwijderen"
-
-msgid "Remove {0} unmatched objects"
-msgstr "Verwijder {0} niet overeenkomende objecten"
-
 msgid "Remove selected matches"
 msgstr "Geselecteerde overeenkomsten verwijderen"
 
+msgid "Remove ({0})"
+msgstr ""
+
 msgid "Conflate"
 msgstr "Samenvoegen"
 
@@ -29706,8 +29824,11 @@ msgstr "Geselecteerde objecten samenvoegen"
 msgid "Conflation: {0}"
 msgstr "Samenvoeging: {0}"
 
-msgid "Cannot replace geometry."
-msgstr "Kan geometrie niet vervangen."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
+msgstr ""
 
 msgid "Zoom to selected primitive(s)"
 msgstr "Zoom naar geselecteerde primitief(ven)"
@@ -29718,23 +29839,130 @@ msgstr "Selecteer geselecteerde primitief(ven)"
 msgid "Select the primitives currently selected in the list"
 msgstr "Selecteer de momenteel geselecteerde primitieven in de lijst"
 
-msgid "Match finder settings"
-msgstr "Instellingen voor Overeenkomsten zoeken"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr "Onderwerp"
+
+msgid "Conflate object pair"
+msgstr "Objectpaar samenvoegen"
+
+msgid "Cannot replace geometry."
+msgstr "Kan geometrie niet vervangen."
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] "{0} object toegevoegd aan onderwerplaag"
+msgstr[1] "{0} objecten toegevoegd aan onderwerplaag"
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr "Verwijder {0} niet overeenkomende objecten"
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Gewicht"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
+msgstr ""
+
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
+msgstr ""
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
 
-msgid "Match finder method"
-msgstr "Methode voor Overeenkomsten zoeken"
+msgid "Matching"
+msgstr ""
 
-msgid "Threshold distance"
-msgstr "Drempelafstand"
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
-msgstr "Een grotere afstand dan deze zal resulteren in een score van nul."
+msgid "Simple Example"
+msgstr ""
 
-msgid "Centroid distance"
-msgstr "Afstand zwaartepunt"
+msgid "Advanced Example"
+msgstr ""
 
-msgid "Hausdorff distance"
-msgstr "Afstand Hausdorff"
+msgid "<Please select data>"
+msgstr ""
 
 msgid "Configure conflation settings"
 msgstr "Instellingen voor samenvoegen configureren"
@@ -29742,14 +29970,32 @@ msgstr "Instellingen voor samenvoegen configureren"
 msgid "Generate matches"
 msgstr "Overeenkomsten genereren"
 
-msgid "Layer:"
-msgstr "Laag:"
+msgid "Reference:"
+msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
-msgstr "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
+msgstr ""
 
-msgid "Subject"
-msgstr "Onderwerp"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Geometrie vervangen"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
+msgstr ""
 
 msgid "Selections must be made for both reference and subject."
 msgstr ""
@@ -29782,11 +30028,26 @@ msgstr "Lege selectie"
 msgid "Freeze reference selection"
 msgstr "Selectie van verwijzing bevriezen"
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
-msgstr "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
+msgstr ""
 
-msgid "Invalid reference or subject"
-msgstr "Ongeldige verwijzing of onderwerp"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
+msgstr ""
 
 msgid "Download OSM data continuously"
 msgstr "Doorlopend gegevens van OSM downloaden"
@@ -30907,6 +31168,33 @@ msgstr "Vectorafbeeldingen importeren"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "SVG-bestanden [ImportVec plugin] (*.svg)"
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr "Assistent wachtruimte ..."
 
@@ -31174,9 +31462,6 @@ msgstr "Weg vervangen"
 msgid "Replace way of selected way with a new way"
 msgstr "Vervang weg van geselecteerde weg door een nieuwe weg"
 
-msgid "Replace Geometry"
-msgstr "Geometrie vervangen"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -32517,9 +32802,6 @@ msgstr "GPS-gegevens van foto bewerken"
 msgid "Please select an image first."
 msgstr "Selecteer eerst een afbeelding."
 
-msgid "No image selected"
-msgstr "Geen afbeelding geselecteerd"
-
 msgid "(Empty values delete the according fields.)"
 msgstr "(Lege waarden verwijderen de overeenkomende velden)"
 
@@ -33544,6 +33826,12 @@ msgstr ""
 "Waarschuwing: niet ondersteund eindelement ''{0}'' in inhoud wijzigingenset "
 "op positie ({1},{2}). Overslaan."
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr "Plug-in Road Sign"
 
@@ -33673,9 +33961,6 @@ msgstr "Configureer de voorkeuren voor routeren."
 msgid "Speed (Km/h)"
 msgstr "Snelheid (km/u)"
 
-msgid "Weight"
-msgstr "Gewicht"
-
 msgid "Enter weight values"
 msgstr "Voer waarden voor gewicht in"
 
diff --git a/i18n/po/nn.po b/i18n/po/nn.po
index cd260be..a0e15e5 100644
--- a/i18n/po/nn.po
+++ b/i18n/po/nn.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2009-07-15 12:49+0000\n"
 "Last-Translator: Skippern <Unknown>\n"
 "Language-Team: Norwegian Nynorsk <nn at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:06+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:02+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: nn\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1388,7 +1388,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7918,6 +7918,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9232,6 +9238,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14447,6 +14456,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14455,6 +14472,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14900,6 +14921,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14912,9 +14945,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14927,6 +14966,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15718,10 +15760,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15841,7 +15883,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16168,6 +16210,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16200,7 +16247,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16320,6 +16367,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16488,6 +16540,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24830,6 +24887,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24960,18 +25020,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25570,10 +25669,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25621,9 +25720,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25655,9 +25751,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25763,16 +25856,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25826,6 +25919,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25894,6 +25990,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25915,6 +26017,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25941,6 +26049,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25955,6 +26066,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25997,18 +26111,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26505,6 +26607,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26538,6 +26643,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26625,12 +26735,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26731,9 +26867,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27310,14 +27443,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27348,13 +27473,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27366,7 +27488,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27378,22 +27503,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27402,13 +27634,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27441,10 +27691,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28472,6 +28737,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28723,9 +29015,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29967,9 +30256,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30950,6 +31236,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31079,9 +31371,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/oc.po b/i18n/po/oc.po
index fd71e27..b784791 100644
--- a/i18n/po/oc.po
+++ b/i18n/po/oc.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2012-10-03 22:14+0000\n"
 "Last-Translator: Cédric VALMARY (Tot en òc) <cvalmary at yahoo.fr>\n"
 "Language-Team: Occitan (post 1500) <oc at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:07+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:04+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1395,7 +1395,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7925,6 +7925,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9239,6 +9245,9 @@ msgstr "Version de l’API : {0}"
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14456,6 +14465,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14464,6 +14481,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14909,6 +14930,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14921,9 +14954,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14936,6 +14975,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15727,10 +15769,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15850,7 +15892,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16177,6 +16219,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16209,7 +16256,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16329,6 +16376,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16497,6 +16549,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24839,6 +24896,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24969,18 +25029,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25579,10 +25678,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25630,9 +25729,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25664,9 +25760,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25772,16 +25865,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25835,6 +25928,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25903,6 +25999,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25924,6 +26026,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25950,6 +26058,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25964,6 +26075,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26006,18 +26120,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26514,6 +26616,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26547,6 +26652,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26634,12 +26744,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26740,9 +26876,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27319,14 +27452,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27357,13 +27482,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27375,7 +27497,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27387,22 +27512,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27411,13 +27643,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27450,10 +27700,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28481,6 +28746,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28732,9 +29024,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29976,9 +30265,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30959,6 +31245,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31088,9 +31380,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/pa.po b/i18n/po/pa.po
index 9b26797..bf30c1a 100644
--- a/i18n/po/pa.po
+++ b/i18n/po/pa.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2011-05-06 15:52+0000\n"
 "Last-Translator: A S Alam <aalam at users.sf.net>\n"
 "Language-Team: Punjabi <pa at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:08+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:04+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: pa\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1388,7 +1388,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7918,6 +7918,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9232,6 +9238,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14447,6 +14456,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14455,6 +14472,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14900,6 +14921,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14912,9 +14945,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14927,6 +14966,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15718,10 +15760,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15841,7 +15883,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16168,6 +16210,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16200,7 +16247,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16320,6 +16367,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16488,6 +16540,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24830,6 +24887,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24960,18 +25020,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25570,10 +25669,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25621,9 +25720,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25655,9 +25751,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25763,16 +25856,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25826,6 +25919,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25894,6 +25990,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25915,6 +26017,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25941,6 +26049,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25955,6 +26066,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25997,18 +26111,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26505,6 +26607,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26538,6 +26643,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26625,12 +26735,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26731,9 +26867,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27310,14 +27443,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27348,13 +27473,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27366,7 +27488,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27378,22 +27503,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27402,13 +27634,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27441,10 +27691,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28472,6 +28737,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28723,9 +29015,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29967,9 +30256,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30950,6 +31236,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31079,9 +31371,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/pl.po b/i18n/po/pl.po
index dad86e6..b18ab64 100644
--- a/i18n/po/pl.po
+++ b/i18n/po/pl.po
@@ -8,17 +8,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
-"PO-Revision-Date: 2017-02-09 21:39+0000\n"
-"Last-Translator: Teiron <mmok444 at gmail.com>\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
+"PO-Revision-Date: 2017-03-20 14:32+0000\n"
+"Last-Translator: Władysław Komorek <Unknown>\n"
 "Language-Team: polski <>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
 "|| n%100>=20) ? 1 : 2;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:09+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:05+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: pl\n"
 "X-Poedit-Bookmarks: 1098,-1,-1,-1,-1,-1,-1,-1,-1,-1\n"
 "X-Poedit-Basepath: /home/mfloryan/dev/josm/i18n\n"
@@ -1319,7 +1319,7 @@ msgid ""
 "Select all undeleted objects in the data layer. This selects incomplete "
 "objects too."
 msgstr ""
-"Zaznacz wszystkie nieusunięte obiekty na warstwie danych. Zaznaczy totakże "
+"Zaznacza wszystkie nieusunięte obiekty na warstwie danych. Zaznaczy także "
 "obiekty niekompletne."
 
 msgid "Non-branching way sequences"
@@ -1526,8 +1526,8 @@ msgstr "Rysuj linie pomiędzy punktami GPS."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Przełącza ustawienie globalne „{0}”."
 
-msgid "Encourage/discourage upload"
-msgstr "Zachęcaj/odradzaj wysyłanie"
+msgid "Discourage upload"
+msgstr "Odrzuć przesyłanie"
 
 msgid "UnGlue Ways"
 msgstr "Rozdziel linie"
@@ -1965,9 +1965,9 @@ msgstr "Uwagi"
 
 msgid "{0} note has been downloaded."
 msgid_plural "{0} notes have been downloaded."
-msgstr[0] "{0} uwaga została pobrana."
-msgstr[1] "{0} uwagi zostały pobrane."
-msgstr[2] "{0} uwag zostało pobranych."
+msgstr[0] "Pobrano {0} uwagę."
+msgstr[1] "Pobrano {0} uwagi."
+msgstr[2] "Pobrano {0} uwag."
 
 msgid ""
 "Since the download limit was {0}, there might be more notes to download."
@@ -2381,7 +2381,7 @@ msgstr ""
 "aby zsynchronizować dźwięk w tym punkcie."
 
 msgid "Select, move, scale and rotate objects"
-msgstr "Zaznacza, przesuwa, skaluje i obrac obiekty"
+msgstr "Zaznacza, przemieszcza, skaluje i obraca obiekty"
 
 msgid ""
 "Are you sure that you want to move elements with attached ways that are "
@@ -2747,7 +2747,7 @@ msgid "all closed ways"
 msgstr "wszystkie zamknięte linie"
 
 msgid "object without useful tags"
-msgstr "obiekt bez użytecznych tagów"
+msgstr "obiekt bez użytecznych znaczników"
 
 msgid "metadata"
 msgstr "metadane"
@@ -2809,6 +2809,7 @@ msgstr "wszystkie niekompletne obiekty"
 
 msgid "all deleted objects (checkbox <b>{0}</b> must be enabled)"
 msgstr ""
+"wszystkie usunięte obiekty (pole wyboru <b>{0}</b> musi być włączone)"
 
 msgid "related objects"
 msgstr "powiązane obiekty"
@@ -2961,14 +2962,15 @@ msgid "Missing operator for NOT"
 msgstr "Brak parametru dla NOT"
 
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
-msgstr "Automatyczne wycinanie wartości tagu „{0}” z usuniętego obiektu {1}"
+msgstr ""
+"Automatyczne wycinanie wartości znacznika „{0}” z usuniętego obiektu {1}"
 
 msgid ""
 "Length of value for tag ''{0}'' on object {1} exceeds the max. allowed "
 "length {2}. Values length is {3}."
 msgstr ""
-"Długość wartości tagu „{0}” na obiekcie {1} przekracza max dozwolona długość "
-"{2}. Długość wartości to {3}."
+"Długość wartości znacznika „{0}” na obiekcie {1} przekracza max dozwolona "
+"długość {2}. Długość wartości to {3}."
 
 msgid "Precondition Violation"
 msgstr "Naruszenie warunku wstępnego"
@@ -3112,18 +3114,18 @@ msgstr[2] "Ustaw {0}={1} dla {2} objektów"
 
 msgid "Deleted {0} tags for {1} object"
 msgid_plural "Deleted {0} tags for {1} objects"
-msgstr[0] "Usunięto {0} tagów dla {1} obiektu"
-msgstr[1] "Usunięto {0} tagów dla {1} objektów"
-msgstr[2] "Usunięto {0} tagów dla {1} objektów"
+msgstr[0] "Usunięto {0} znaczników dla {1} obiektu"
+msgstr[1] "Usunięto {0} znaczników dla {1} obiektów"
+msgstr[2] "Usunięto {0} znaczników dla {1} obiektów"
 
 msgid "Set {0} tags for {1} object"
 msgid_plural "Set {0} tags for {1} objects"
-msgstr[0] "Ustaw {0} tagów dla {1} obiektu"
-msgstr[1] "Ustaw {0} tagów dla {1} objektów"
-msgstr[2] "Ustaw {0} tagów dla {1} objektów"
+msgstr[0] "Ustal {0} znaczników dla {1} obiektu"
+msgstr[1] "Ustal {0} znaczników dla {1} obiektów"
+msgstr[2] "Ustal {0} znaczników dla {1} obiektów"
 
 msgid "Replace \"{0}\" by \"{1}\" for"
-msgstr "Zamień „{0}” na „{1}” dla"
+msgstr "Zastąp „{0}” na „{1}” dla"
 
 msgid "object"
 msgid_plural "objects"
@@ -3138,8 +3140,7 @@ msgid "Deleted ''{0}''"
 msgstr "Usunięto „{0}”"
 
 msgid "At least one object to delete required, got empty collection"
-msgstr ""
-"Pzynajmniej jeden obiekt potrzebny, aby usunąć, otrzymano puste zaznaczenie"
+msgstr "Wymagany przynajmniej jeden obiekt do usunięcia. Jest pusty zbiór."
 
 msgid "Delete node {0}"
 msgstr "Usunięto węzeł {0}"
@@ -3175,7 +3176,7 @@ msgstr[1] "Usunięto {0} relacje"
 msgstr[2] "Usunięto {0} relacji"
 
 msgid "Delete confirmation"
-msgstr "Potwierdź usunięcie."
+msgstr "Potwierdzanie usuwania"
 
 msgid ""
 "You are about to delete nodes outside of the area you have "
@@ -3202,20 +3203,20 @@ msgid_plural ""
 "and cannot be undone easily after being uploaded to the server.<br/>Do you "
 "really want to delete?"
 msgstr[0] ""
-"Zamierzasz usunąć {0} relację: {1}<br/>Jest to bardzo rzadko wymagana "
-"czynność i nie będzie możliwości jej łatwego cofnięcia po wysłaniu zmian na "
-"serwer.<br/>Czy na pewno chcesz usunąć ?"
+"Zostanie usunięta {0} relacja: {1}<br/>Jest to bardzo rzadko wykonywana "
+"czynność i cofnięcie jej będzie trudne po wysłaniu zmian na "
+"serwer.<br/>Usunąć tę relację?"
 msgstr[1] ""
-"Zamierzasz usunąć {0} relacje: {1}<br/>Jest to bardzo rzadko wymagana "
-"czynność i nie będzie możliwości jej łatwego cofnięcia po wysłaniu zmian na "
-"serwer.<br/>Czy na pewno chcesz usunąć ?"
+"Zostaną usunięte {0} relacje: {1}<br/>Jest to bardzo rzadko wykonywana "
+"czynność i cofnięcie jej będzie trudne po wysłaniu zmian na "
+"serwer.<br/>Usunąć te relacje?"
 msgstr[2] ""
-"Zamierzasz usunąć {0} relacji: {1}<br/>Jest to bardzo rzadko wymagana "
-"czynność i nie będzie możliwości jej łatwego cofnięcia po wysłaniu zmian na "
-"serwer.<br/>Czy na pewno chcesz usunąć ?"
+"Zostanie usuniętych {0} relacji: {1}<br/>Jest to bardzo rzadko wykonywana "
+"czynność i cofnięcie jej będzie trudne po wysłaniu zmian na "
+"serwer.<br/>Usunąć te relacje?"
 
 msgid "Delete relation?"
-msgstr "Usunąć relację?"
+msgstr "Usuwanie relacji"
 
 msgid "Move {0} node"
 msgid_plural "Move {0} nodes"
@@ -3301,25 +3302,25 @@ msgid "Set the ''modified'' flag for relation {0}"
 msgstr "Ustaw flagę „zmodyfikowano” w relacji {0}"
 
 msgid "Resolve conflicts in member list of relation {0}"
-msgstr "Rozwiąż konflikt w liscie członków relacji {0}"
+msgstr "Rozwiąż konflikt w liście członków relacji {0}"
 
 msgid "Resolve {0} tag conflict in node {1}"
 msgid_plural "Resolve {0} tag conflicts in node {1}"
-msgstr[0] "Rozwiąż {0} konflikt tagu w węźle {1}"
-msgstr[1] "Rozwiąż {0} konflikty tagu w węźle {1}"
-msgstr[2] "Rozwiąż {0} konfliktów tagu w węźle {1}"
+msgstr[0] "Rozwiąż {0} konflikt znacznika w węźle {1}"
+msgstr[1] "Rozwiąż {0} konflikty znacznika w węźle {1}"
+msgstr[2] "Rozwiąż {0} konfliktów znacznika w węźle {1}"
 
 msgid "Resolve {0} tag conflict in way {1}"
 msgid_plural "Resolve {0} tag conflicts in way {1}"
-msgstr[0] "Rozwiąż {0} konflikt tagu w linii {1}"
-msgstr[1] "Rozwiąż {0} konflikty tagu w linii {1}"
-msgstr[2] "Rozwiąż {0} konfliktów tagu w linii {1}"
+msgstr[0] "Rozwiąż {0} konflikt znacznika w linii {1}"
+msgstr[1] "Rozwiąż {0} konflikty znacznika w linii {1}"
+msgstr[2] "Rozwiąż {0} konfliktów znacznika w linii {1}"
 
 msgid "Resolve {0} tag conflict in relation {1}"
 msgid_plural "Resolve {0} tag conflicts in relation {1}"
-msgstr[0] "Rozwiąż {0} konflikt tagu w relacji {1}"
-msgstr[1] "Rozwiąż {0} konflikty tagu w relacji {1}"
-msgstr[2] "Rozwiąż {0} konfliktów tagu w relacji {1}"
+msgstr[0] "Rozwiąż {0} konflikt znacznika w relacji {1}"
+msgstr[1] "Rozwiąż {0} konflikty znacznika w relacji {1}"
+msgstr[2] "Rozwiąż {0} konfliktów znacznika w relacji {1}"
 
 msgid "Resolve version conflict for node {0}"
 msgstr "Rozwiaż konflikt wersji w węźle {0}"
@@ -3345,9 +3346,9 @@ msgid_plural ""
 "of these tags are defined by its direction:<br/>{1}Do you really want to "
 "change the way direction, thus its semantic meaning?</html>"
 msgstr[0] ""
-"<html>Zamierzasz odwrócić drogę „{0}'',<br/> dla której znaczenie tagu „{1}” "
-"zależy od kierunku.<br/>Czy na pewno chcesz zmienić jej kierunek, a więc "
-"także jej znaczenie?</html>"
+"<html>Zamierzasz odwrócić drogę „{0}'',<br/> dla której znaczenie znacznika "
+"„{1}” zależy od kierunku.<br/>Czy na pewno chcesz zmienić jej kierunek, a "
+"więc także jej znaczenie?</html>"
 msgstr[1] ""
 "<html>Zamierzasz odwrócić drogę''{0}'',<br/> dla której znaczenie poniższych "
 "tagów zależy od kierunku.<br/>{1} Czy na pewno chcesz zmienić jej kierunek, "
@@ -3606,25 +3607,27 @@ msgid "E"
 msgstr "E"
 
 msgid "Date of imagery: {0}"
-msgstr ""
+msgstr "Data obrazu: {0}"
 
 msgid "This imagery is marked as best in this region in other editors."
 msgstr ""
+"Ta obrazowość jest oznaczona jako najlepsza w tym regionie w innych "
+"edytorach."
 
 msgid "{0} mirror server {1}"
-msgstr ""
+msgstr "{0} podobny serwer {1}"
 
 msgid "{0} mirror server"
-msgstr ""
+msgstr "{0} podobny serwer"
 
 msgid "Update default entries"
 msgstr "Uaktualnia domyślne wpisy"
 
 msgid "Update imagery ''{0}''"
-msgstr ""
+msgstr "Aktualizacja obrazu ''{0}''"
 
 msgid "Drop old imagery ''{0}''"
-msgstr ""
+msgstr "Wżuć stary obraz ''{0}''"
 
 msgid "Projection ''{0}'' is not found, bookmark ''{1}'' is not usable"
 msgstr ""
@@ -4003,6 +4006,7 @@ msgstr "Ukośny Mercator"
 
 msgid "Unsuitable parameters ''{0}'' and ''{1}'' for two point method."
 msgstr ""
+"Niewłaściwe parametry '' {0} '' i '' {1} '' dla metody dwu punktowej."
 
 msgid "Illegal value for parameter ''{0}'': {1}"
 msgstr "Niedozwolona wartość parametru „{0}'': {1}"
@@ -4458,7 +4462,7 @@ msgid "Missing name:*={0}. Add tag with correct language key."
 msgstr "Brakujący tag name:*={0}. Dodaj tag z prawidłowym kodem języka."
 
 msgid "A name is missing, even though name:* exists."
-msgstr "Brak tagu name, istnieje jednak name:*"
+msgstr "Brak znacznika name, istnieje jednak name:*"
 
 msgid "Opening hours syntax"
 msgstr "Składnia Godzin Otwarcia"
@@ -4575,24 +4579,26 @@ msgid ""
 "Type ''{0}'' of relation member with role ''{1}'' does not match accepted "
 "types ''{2}'' in template {3}"
 msgstr ""
+"Typ '' {0} '' członu relacji z rolą '' {1} '' nie pasuje do akceptowanych "
+"typów '' {2} '' w szablonie {3}"
 
 msgid "<empty>"
 msgstr "<pusta>"
 
 msgid "Role ''{0}'' unknown in templates ''{1}''"
-msgstr ""
+msgstr "Rola '' {0} '' nieznana w szablonach '' {1} ''"
 
 msgid "Empty role type found when expecting one of ''{0}''"
 msgstr ""
 
 msgid "Role ''{0}'' missing"
-msgstr ""
+msgstr "Brakująca rola „{0}”"
 
 msgid "Number of ''{0}'' roles too low ({1})"
-msgstr ""
+msgstr "Za mała liczba ({1}) ról „{0}”"
 
 msgid "Number of ''{0}'' roles too high ({1})"
-msgstr ""
+msgstr "Za duża liczba ({1}) ról „{0}”"
 
 msgid "Self-intersecting ways"
 msgstr "Linie przecinające same siebie"
@@ -4754,46 +4760,49 @@ msgid "Unknown member type"
 msgstr "Nieznany rodzaj elementu"
 
 msgid "More than one \"from\" way found"
-msgstr "Znaleziono więcej niż jedną linię „from\""
+msgstr "Znaleziono więcej niż jedną linię z rolą „from”"
 
 msgid "More than one \"to\" way found"
-msgstr "Znaleziono więcej niż jedną linię „to\""
+msgstr "Znaleziono więcej niż jedną linię z rolą „to”"
 
 msgid "More than one \"via\" node found"
-msgstr "Więcej niż jeden węzeł w roli „przez\""
+msgstr "Więcej niż jeden węzeł z rolą „via”"
 
 msgid "Cannot mix node and way for role \"via\""
-msgstr "Węzeł i linia nie mogą być razem w roli „przez”."
+msgstr "Węzeł i linia nie mogą być razem z rolą „via”."
 
 msgid "No \"from\" way found"
-msgstr "Nie znaleziono linii „from\""
+msgstr "Nie odnaleziono linii z rolą „from\""
 
 msgid "No \"to\" way found"
 msgstr "Nie znaleziono linii z rolą „to\""
 
 msgid "\"from\" way equals \"to\" way"
-msgstr "Linia „from” jest taka sama jak „to”"
+msgstr "Linia z rolą „from” jest taka sama jak z rolą „to”"
 
 msgid "No \"via\" node or way found"
-msgstr "Nie znaleziono linii lub węzła z rolą „via\""
+msgstr "Nie odnaleziono drogi lub węzła z rolą „via\""
 
 msgid "The \"from\" way does not start or end at a \"via\" node."
-msgstr "Linia „from” nie rozpoczyna się lub nie kończy w węźle\"via”."
+msgstr ""
+"Droga z rolą „from” nie rozpoczyna się lub nie kończy w węźle z rolą „via”."
 
 msgid "Superfluous turnrestriction as \"to\" way is oneway"
-msgstr "Zbędne ograniczenie skrętu w linię jednokierunkową"
+msgstr "Zbędne ograniczenie skrętu w drogę jednokierunkową"
 
 msgid "The \"to\" way does not start or end at a \"via\" node."
-msgstr "Linia „to” nie rozpoczyna się lub nie kończy w węźle „via”."
+msgstr ""
+"Linia z rolą „to” nie rozpoczyna się lub nie kończy w węźle z rolą „via”."
 
 msgid "The \"from\" and the first \"via\" way are not connected."
-msgstr "Linia „z” nie jest połączona z pierwszą linią „przez”."
+msgstr ""
+"Linia z rolą „from” nie jest połączona z pierwszą linią z rolą „via”."
 
 msgid "The \"via\" ways are not connected."
-msgstr "Linie „przez” nie są połączone."
+msgstr "Linie z rolą „via” nie są połączone."
 
 msgid "The last \"via\" and the \"to\" way are not connected."
-msgstr "Ostatnia linia „przez” nie jest połączona z linią „do”."
+msgstr "Ostatnia linia „via” nie jest połączona z linią „to”."
 
 msgid "Unclosed Ways"
 msgstr "Niezamknięte linie"
@@ -4942,13 +4951,13 @@ msgid "Show this dialog again the next time"
 msgstr "Wyświetlenie tego okna ponownie następnym razem"
 
 msgid "Do not show again (this operation)"
-msgstr "Pomijanie wyświetlania ponownie (dla tej czynności)"
+msgstr "Pomijanie tego komunikatu ponownie (dla tej czynności)"
 
 msgid "Do not show again (this session)"
-msgstr "Pomijanie wyświetlania ponownie (dla tej sesji)"
+msgstr "Pomijanie tego komunikatu ponownie (dla tej sesji)"
 
 msgid "Do not show again (remembers choice)"
-msgstr "Pomijanie wyświetlania ponownie (zapamiętanie wyboru)"
+msgstr "Pomijanie tego komunikatu ponownie (zapamiętanie wyboru)"
 
 msgid "incomplete"
 msgstr "niekompletne"
@@ -5996,10 +6005,10 @@ msgid "<undefined>"
 msgstr "<niezdefinowane>"
 
 msgid "The merged dataset will not include a tag with key {0}"
-msgstr "Połączony zestaw nie będzie zawierał tagu z kluczem {0}"
+msgstr "Połączony zestaw nie będzie zawierał znacznika z kluczem {0}"
 
 msgid "My dataset does not include a tag with key {0}"
-msgstr "Mój zestaw nie zawieta tagu z kluczem {0}"
+msgstr "Mój zestaw nie zawiera znacznika z kluczem {0}"
 
 msgid "Cannot apply undecided tag merge item."
 msgstr ""
@@ -6210,8 +6219,8 @@ msgid ""
 "<html>Select to enable entering a tag which will be applied<br>to all "
 "modified relations.</html>"
 msgstr ""
-"<html>Wybierz by włączyć wprowadzanie tagu który zostanie zastosowany<br>do "
-"wszystkich zmodyfikowanych relacji.</html>"
+"<html>Wybierz by włączyć wprowadzanie znacznika który zostanie "
+"zastosowany<br>do wszystkich zmodyfikowanych relacji.</html>"
 
 msgctxt "tag"
 msgid "Key:"
@@ -6790,11 +6799,15 @@ msgid ""
 "Use positive numbers or N, E characters to indicate North or East cardinal "
 "direction."
 msgstr ""
+"Użyj dodatnich liczb  dla N, E znaków, aby wskazać Północ lub Wschód "
+"kierunku kardynalnego."
 
 msgid ""
 "For South and West cardinal directions you can use either negative numbers "
 "or S, W characters."
 msgstr ""
+"Dla Południa i Zachodu kierunków kardynalnych można używać ujemnych liczb "
+"lub znaków S, W."
 
 msgid "Coordinate value can be in one of three formats:"
 msgstr "Wartości współrzędnych mogą być podane w jednym z trzech formatów:"
@@ -7168,13 +7181,13 @@ msgid "# Objects"
 msgstr "Liczba obiektów"
 
 msgid "Validation Results"
-msgstr "Wyniki sprawdzania poprawności"
+msgstr "Sprawdzanie poprawności"
 
 msgid "Open the validation window."
 msgstr "Otwiera okno z informacją o rezultatach sprawdzania poprawności"
 
 msgid "Validation results"
-msgstr "Wyniki sprawdzania poprawności"
+msgstr "Sprawdzanie poprawności"
 
 msgid "Lookup"
 msgstr "Wyszukaj"
@@ -7308,7 +7321,7 @@ msgid "Closed"
 msgstr "Zamknięty"
 
 msgid "ID"
-msgstr "Identyfikator"
+msgstr "ID"
 
 msgid "Open"
 msgstr "Otwórz"
@@ -8327,7 +8340,7 @@ msgid "Move the currently selected members up"
 msgstr "Przesuwa aktualnie zaznaczonych członków w górę"
 
 msgid "Apply the updates and close the dialog"
-msgstr "Zastosuj zmiany i zamknij okno"
+msgstr "Wprowadza zmiany i zamyka okno"
 
 msgid "Relation Editor: Refresh"
 msgstr "Edytor relacji: wczytaj ponownie"
@@ -8348,6 +8361,8 @@ msgid ""
 "<html>You have unsaved changes in this editor window.<br><br>Do you want to "
 "discard these changes and reload data from layer?</html>"
 msgstr ""
+"<html>W oknie edytora są niezapisane zmiany.<br><br>Odrzucić te zmiany i "
+"wczytać ponownie dane warstwy? </html>"
 
 msgid "Click to close window"
 msgstr "Kliknij aby zamknąć okno"
@@ -8590,6 +8605,12 @@ msgstr ""
 "uruchomieniu programu.<br>Można otworzyć okno pobierania ręcznie wybierając "
 "polecenie z menu Plik lub ikonę paska narzędziowego.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9350,7 +9371,7 @@ msgstr ""
 "Kończy działanie programu bez zapisywania. Niezapisane dane zostaną utracone."
 
 msgid "Restart now!"
-msgstr "Uruchom ponownie teraz!"
+msgstr "Uruchom ponownie"
 
 msgid "Restart JOSM without saving. Unsaved changes are lost."
 msgstr ""
@@ -9375,8 +9396,8 @@ msgstr "Wykonaj działania przed ponownym uruchomieniem"
 
 msgid "Restart JOSM with saving. Unsaved changes are uploaded and/or saved."
 msgstr ""
-"Ponownie uruchamia JOSM z zapisem. Niezapisane dane są wysyłane i/lub "
-"zapisywane."
+"Ponownie uruchamia JOSM uprzednio zapisując dane. Niezapisane dane są "
+"wysyłane i/lub zapisywane."
 
 msgid "Perform actions before deleting"
 msgstr "Wykonaj czynności i usuń"
@@ -9542,13 +9563,13 @@ msgid_plural ""
 "<html>The following changeset tags contain an empty "
 "key/value:<br>{0}<br>Continue?</html>"
 msgstr[0] ""
-"<html>Podany tag zestawu zmian zawiera pusty "
+"<html>Podany znacznik zestawu zmian zawiera pusty "
 "klucz/wartość:<br>{0}<br>Kontynuować?</html>"
 msgstr[1] ""
-"<html>Podane tagi zestawu zmian zawierają puste "
+"<html>Podane znaczniki zestawu zmian zawierają puste "
 "klucze/wartości:<br>{0}<br>Kontynuować?</html>"
 msgstr[2] ""
-"<html>Podane tagi zestawu zmian zawierają puste "
+"<html>Podane znaczniki zestawu zmian zawierają puste "
 "klucze/wartości:<br>{0}<br>Kontynuować?</html>"
 
 msgid "Empty metadata"
@@ -9941,7 +9962,7 @@ msgid "Details..."
 msgstr "Szczegóły..."
 
 msgid "Do not show this message again"
-msgstr "Pomijanie wyświetlania tej informacji"
+msgstr "Pomijanie tego komunikatu ponownie"
 
 msgid "Hide this message and never show it again"
 msgstr "Ukrywa tę informację i nie wyświetla jej ponownie"
@@ -10075,6 +10096,9 @@ msgstr "Wersja API: {0}"
 msgid "Upload is discouraged"
 msgstr "Wysyłanie odradzane"
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Skonwertuj na warstwę GPX"
 
@@ -11793,7 +11817,7 @@ msgid "Track date"
 msgstr "Data śladu"
 
 msgid "Heat Map (dark = few, bright = many)"
-msgstr "Mapa cieplna (ciemny = kilka, jasny = wiele)"
+msgstr "Mapa termiczna (ciemny = kilka, jasny = wiele)"
 
 msgid "Single Color (can be customized for named layers)"
 msgstr "Jeden kolor (moze być zmieniony dla nazwanej warstwy)"
@@ -11960,7 +11984,7 @@ msgstr ""
 "Pozwana na dostrojenie kolorowania ścieżek dla różnych prędkości średnich."
 
 msgid "Selects the color schema for heat map."
-msgstr ""
+msgstr "Wybiera zestaw kolorów dla mapy termicznej"
 
 msgid "Track and Point Coloring"
 msgstr "Kolorowanie śladów i punktów"
@@ -12084,7 +12108,7 @@ msgid "Default (Auto determined)"
 msgstr "Domyślny (ustalony automatycznie)"
 
 msgid "Add Imagery URL"
-msgstr "Dodaj URL podkładu mapy"
+msgstr "Dodawanie adresu URL podkładu mapy"
 
 msgid "1. Enter URL"
 msgstr "1. Wprowadź adres URL"
@@ -13511,10 +13535,10 @@ msgid "elements"
 msgstr "elementy"
 
 msgid "Select auto-increment of {0} for this field"
-msgstr ""
+msgstr "Wybiera automatyczne zwiększanie wartości o {0} dla tego pola"
 
 msgid "Cancel auto-increment for this field"
-msgstr ""
+msgstr "Anuluje automatyczne zwiększanie wartości dla tego pola"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13598,6 +13622,8 @@ msgid ""
 "partial: different selected objects have different values for ''{0}'', do "
 "not change"
 msgstr ""
+"częściowe: różne zaznaczone obiekty mają różne wartości dla „{0}” - nie "
+"zmienia"
 
 msgid "unset: do not set this property on the selected objects"
 msgstr "nieustalone: nie ustala tej właściwości dla zaznaczonych obiektów"
@@ -13609,7 +13635,7 @@ msgid "Cut"
 msgstr "Wytnij"
 
 msgid "Right click = copy to clipboard"
-msgstr "Prawy przycisk myszy = kopiuj do schowka"
+msgstr "Kliknięcie prawym przyciskiem myszy kopiuje odnośnik do schowka"
 
 msgid "Missing mandatory attribute ''{0}''."
 msgstr "Brakuje wymaganego atrybutu „{0}”."
@@ -13653,7 +13679,7 @@ msgid ""
 "Relation with external id ''{0}'' refers to a missing primitive with "
 "external id ''{1}''."
 msgstr ""
-"Relacja z zewnętrznym ID „{0}'' odnosi się do brakującego elementu z "
+"Relacja z zewnętrznym ID „{0}” odnosi się do brakującego elementu z "
 "zewnętrznym ID „{1}”."
 
 msgid "Deleted member {0} is used by relation {1}"
@@ -13672,7 +13698,7 @@ msgid "Downloading notes"
 msgstr "Pobieranie uwag"
 
 msgid "Failed to open input stream for resource ''{0}''"
-msgstr ""
+msgstr "Nie udało się otworzyć strumienia wejściowego dla zasobu „{0}”"
 
 msgid ""
 "Failed to open file with extension ''{2}'' and namepart ''{3}'' in zip file "
@@ -13680,7 +13706,7 @@ msgid ""
 msgstr ""
 
 msgid "The requested URL {0} was not found"
-msgstr ""
+msgstr "Nie odnaleziono żądanego adresu URL {0}"
 
 msgid "Failed to rename file {0} to {1}."
 msgstr "Nie udało się zmienić nazwy pliku {0} na {1}."
@@ -13699,7 +13725,7 @@ msgid ""
 msgstr ""
 
 msgid "Adding certificate for TLS connections: {0}"
-msgstr ""
+msgstr "Dodawanie certyfikatu dla połączenia TLS: {0}"
 
 msgid "Failed to parse date ''{0}'' replied by server."
 msgstr ""
@@ -13735,7 +13761,7 @@ msgid "The proxy will not be used."
 msgstr "Proxy nie będzie użyte."
 
 msgid "Illegal port number in preference ''{0}''. Got {1}."
-msgstr ""
+msgstr "Nieprawidłowy numer portu w parametrze „{0}”. Jest {1}."
 
 msgid ""
 "Unexpected value for preference ''{0}'' found. Got ''{1}''. Will use no "
@@ -13876,7 +13902,7 @@ msgid "Looking for image files"
 msgstr "Wyszukiwanie plików obrazu"
 
 msgid "No image files found."
-msgstr "Nie znaleziono plików obrazu."
+msgstr "Nie odnaleziono plików obrazu"
 
 msgid "get number of unread messages"
 msgstr "pobieranie liczby nieprzeczytanych wiadomości"
@@ -14187,7 +14213,7 @@ msgid "Incomplete <member> specification with ref=0"
 msgstr "Niekompletny opis <member> z ref=0"
 
 msgid "Missing key or value attribute in tag."
-msgstr "Brakujący klucz lub wartość tagu."
+msgstr "Brakujący klucz lub wartość znacznika."
 
 msgid "Undefined element ''{0}'' found in input stream. Skipping."
 msgstr ""
@@ -14379,7 +14405,7 @@ msgid "Add selected tags"
 msgstr "Dodaj zaznaczone tagi"
 
 msgid "Add all tags"
-msgstr "Dodaj wszystkie tagi"
+msgstr "Dodaj wszystkie znaczniki"
 
 msgid "Add checked tags to selected objects"
 msgstr ""
@@ -15792,6 +15818,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "zabudowa"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "zarośla"
@@ -15800,6 +15834,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr "drzewa"
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "skojarzone ulice"
@@ -15898,7 +15936,7 @@ msgstr "przysiółek"
 
 msgctxt "Place type"
 msgid "suburb"
-msgstr "dzielnica/przedmieście"
+msgstr "przedmieście"
 
 msgid "All Files"
 msgstr "Wszystkie pliki"
@@ -16087,13 +16125,13 @@ msgid "OpenPT Map (overlay)"
 msgstr "OpenPT Map (nakładka)"
 
 msgid "Strava cycling heatmap"
-msgstr "Strava: rowerowa mapa cieplna"
+msgstr "Strava: termiczna mapa rowerowa"
 
 msgid "Strava running heatmap"
-msgstr "Strava: biegowa mapa cieplna"
+msgstr "Strava: termiczna mapa biegowa"
 
 msgid "Strava cycling and running heatmap"
-msgstr "Strava: rowerowa i biegowa mapa cieplna"
+msgstr "Strava: termiczna mapa rowerowa i biegowa"
 
 msgid "Locator Overlay"
 msgstr ""
@@ -16245,6 +16283,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -16257,9 +16307,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr "URBIS 2009  zdjęcia lotnicze"
 
@@ -16272,6 +16328,9 @@ msgstr "URBIS 2014  zdjęcia lotnicze"
 msgid "URBIS 2015 aerial imagery"
 msgstr "URBIS 2015  zdjęcia lotnicze"
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -17063,10 +17122,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -17186,7 +17245,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -17513,6 +17572,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -17545,7 +17609,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -17670,6 +17734,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr "Importuj grafikę gektorową (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -17854,6 +17923,11 @@ msgid "Plugin for reverting changesets"
 msgstr "Wtyczka umożliwiająca odwracanie opublikowanych zmian."
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -18148,10 +18222,10 @@ msgid "Lanes"
 msgstr "Liczba pasów ruchu"
 
 msgid "Lanes in way direction"
-msgstr "Pasy w kierunku drogi"
+msgstr "Liczba pasów w kierunku drogi"
 
 msgid "Lanes opposed to way direction"
-msgstr "Pasy w przeciwnym kierunku"
+msgstr "Liczba pasów w przeciwnym kierunku"
 
 msgid "Max. speed (km/h)"
 msgstr "Maksymalna prędkość (km/h)"
@@ -19196,7 +19270,7 @@ msgstr "lokalna"
 
 msgctxt "Highway"
 msgid "service"
-msgstr "serwisowa"
+msgstr "dojazdowa"
 
 msgctxt "Highway"
 msgid "unclassified"
@@ -19226,10 +19300,10 @@ msgid "Area"
 msgstr "Obszar"
 
 msgid "Service"
-msgstr "Droga serwisowa"
+msgstr "Droga dojazdowa"
 
 msgid "Service way type"
-msgstr "Typ drogi serwisowej"
+msgstr "Typ drogi dojazdowej"
 
 msgid "alley"
 msgstr "alejka"
@@ -20668,7 +20742,7 @@ msgid "With shop"
 msgstr "Ze sklepem"
 
 msgid "convenience"
-msgstr "sklep osiedlowy"
+msgstr "sklep ogólnospożywczy"
 
 msgid "kiosk"
 msgstr "kiosk"
@@ -21206,7 +21280,7 @@ msgid "Mo-Su 12:00-22:00"
 msgstr ""
 
 msgid "Fast Food"
-msgstr "Bar szybkie obsługi"
+msgstr "Bar szybkiej obsługi"
 
 msgid "Food Court"
 msgstr "Przestrzeń restauracyjna"
@@ -21423,7 +21497,7 @@ msgid "Picnic Table"
 msgstr "Stół piknikowy"
 
 msgid "Public Grill"
-msgstr "Publiczny gril"
+msgstr "Publiczny grill"
 
 msgctxt "grill"
 msgid "Fuel"
@@ -21995,7 +22069,7 @@ msgid "Telephone cards"
 msgstr "Karty telefoniczne"
 
 msgid "Internet Cafe"
-msgstr ""
+msgstr "Kafejka internetowa"
 
 msgid "Internet Access"
 msgstr "Punkt dostępu do Internetu"
@@ -22043,7 +22117,7 @@ msgid "Shows humidity"
 msgstr "Pokazuje wilgotność"
 
 msgid "Photo booth"
-msgstr ""
+msgstr "Fotobudka"
 
 msgid "Recycling Container"
 msgstr "Pojemnik na surowce wtórne"
@@ -22161,7 +22235,7 @@ msgid "Water Point"
 msgstr "Punkt pobierania wody"
 
 msgid "Animal watering place"
-msgstr ""
+msgstr "Wodopój dla zwierząt"
 
 msgid "Compressed Air"
 msgstr "Kompresor"
@@ -23608,7 +23682,7 @@ msgid ""
 "(Please only use this tag if more detailed mapping using busbars and bays is "
 "impossible!)"
 msgstr ""
-"(Proszę używać tego tagu tylko wtedy, gdy dokładniejsze zmapowanie jest "
+"(Proszę używać tego znacznika tylko wtedy, gdy dokładniejsze zmapowanie jest "
 "niemożliwe!)"
 
 msgid "Power Busbar"
@@ -24069,7 +24143,7 @@ msgid "Seafood"
 msgstr "Sklep rybny"
 
 msgid "Dairy"
-msgstr ""
+msgstr "Nabiał"
 
 msgid "Deli (Fine Food)"
 msgstr "Delikatesy"
@@ -24764,7 +24838,7 @@ msgid "Isolated Dwelling"
 msgstr "Pojedyncze zabudowania"
 
 msgid "Suburb"
-msgstr "Dzielnica/Przedmieście"
+msgstr "Przedmieście"
 
 msgid "Neighbourhood"
 msgstr "Osiedle/Sąsiedztwo"
@@ -24859,7 +24933,7 @@ msgid "Islet"
 msgstr "Wysepka"
 
 msgid "Reef"
-msgstr "rafa"
+msgstr "Rafa"
 
 msgid "coral"
 msgstr ""
@@ -24961,7 +25035,7 @@ msgid "An accumulation of loose angular rocks."
 msgstr ""
 
 msgid "Shingle"
-msgstr ""
+msgstr "Żwir rzeczny"
 
 msgid "An accumulation of loose rounded rocks on a beach or riverbed."
 msgstr ""
@@ -25239,185 +25313,185 @@ msgid "Country code"
 msgstr "Kod kraju"
 
 msgid "Unit/Suite"
-msgstr ""
+msgstr "Jednostka"
 
 msgid "House name"
 msgstr "Nazwa domu"
 
 msgid "Subdistrict"
-msgstr ""
+msgstr "Poddystrykt"
 
 msgid "District"
-msgstr ""
+msgstr "Dystrykt"
 
 msgid "Province"
-msgstr ""
+msgstr "Województwo"
 
 msgctxt "addr:"
 msgid "State"
-msgstr ""
+msgstr "Stan"
 
 msgid "AL"
-msgstr ""
+msgstr "AL"
 
 msgid "AK"
-msgstr ""
+msgstr "AK"
 
 msgid "AZ"
-msgstr ""
+msgstr "AZ"
 
 msgid "AR"
-msgstr ""
+msgstr "AR"
 
 msgid "CA"
-msgstr ""
+msgstr "CA"
 
 msgid "CO"
-msgstr ""
+msgstr "CO"
 
 msgid "CT"
-msgstr ""
+msgstr "CT"
 
 msgid "DE"
-msgstr ""
+msgstr "DE"
 
 msgid "FL"
-msgstr ""
+msgstr "FL"
 
 msgid "GA"
-msgstr ""
+msgstr "GA"
 
 msgid "HI"
-msgstr ""
+msgstr "HI"
 
 msgid "IL"
-msgstr ""
+msgstr "IL"
 
 msgid "IN"
-msgstr ""
+msgstr "IN"
 
 msgid "IA"
-msgstr ""
+msgstr "IA"
 
 msgid "KS"
-msgstr ""
+msgstr "KS"
 
 msgid "KY"
-msgstr ""
+msgstr "KY"
 
 msgid "LA"
-msgstr ""
+msgstr "LA"
 
 msgid "ME"
-msgstr ""
+msgstr "ME"
 
 msgid "MD"
-msgstr ""
+msgstr "MD"
 
 msgid "MA"
-msgstr ""
+msgstr "MA"
 
 msgid "MI"
-msgstr ""
+msgstr "MI"
 
 msgid "MN"
-msgstr ""
+msgstr "MN"
 
 msgid "MS"
-msgstr ""
+msgstr "MS"
 
 msgid "MO"
-msgstr ""
+msgstr "MO"
 
 msgid "MT"
-msgstr ""
+msgstr "MT"
 
 msgid "NE"
-msgstr ""
+msgstr "NE"
 
 msgid "NV"
-msgstr ""
+msgstr "NV"
 
 msgid "NH"
-msgstr ""
+msgstr "NH"
 
 msgid "NJ"
-msgstr ""
+msgstr "NJ"
 
 msgid "NM"
-msgstr ""
+msgstr "NM"
 
 msgid "NY"
-msgstr ""
+msgstr "NY"
 
 msgid "NC"
-msgstr ""
+msgstr "NC"
 
 msgid "ND"
-msgstr ""
+msgstr "ND"
 
 msgid "OH"
-msgstr ""
+msgstr "OH"
 
 msgid "OR"
-msgstr ""
+msgstr "OR"
 
 msgid "PA"
-msgstr ""
+msgstr "PA"
 
 msgid "RI"
-msgstr ""
+msgstr "RI"
 
 msgid "SC"
-msgstr ""
+msgstr "SC"
 
 msgid "SD"
-msgstr ""
+msgstr "SD"
 
 msgid "TN"
-msgstr ""
+msgstr "TN"
 
 msgid "TX"
-msgstr ""
+msgstr "TX"
 
 msgid "UT"
-msgstr ""
+msgstr "UT"
 
 msgid "VT"
-msgstr ""
+msgstr "VT"
 
 msgid "VA"
-msgstr ""
+msgstr "VA"
 
 msgid "WA"
-msgstr ""
+msgstr "WA"
 
 msgid "WV"
-msgstr ""
+msgstr "WV"
 
 msgid "WI"
-msgstr ""
+msgstr "WI"
 
 msgid "DC"
-msgstr ""
+msgstr "DC"
 
 msgid "AS"
-msgstr ""
+msgstr "AS"
 
 msgid "GU"
-msgstr ""
+msgstr "GU"
 
 msgid "MP"
-msgstr ""
+msgstr "MP"
 
 msgid "PR"
-msgstr ""
+msgstr "PR"
 
 msgid "UM"
-msgstr ""
+msgstr "UM"
 
 msgid "VI"
-msgstr ""
+msgstr "VI"
 
 msgid "Address Interpolation"
 msgstr "Interpolacja adresów"
@@ -25463,17 +25537,19 @@ msgstr "Kontakt (z prefiksem contact:*)"
 
 msgctxt "description=*"
 msgid "A short text with additional information."
-msgstr ""
+msgstr "Krótki tekst zawierający dodatkowe informacje."
 
 msgctxt "description=*"
 msgid ""
 "It might be viewable to the end user (perhaps using a search system or a map "
 "with pop-ups)."
 msgstr ""
+"Może być wyświetlany końcowemu użytkownikowi (być może za pomocą "
+"wyszukiwarki lub na mapie w opisie kontekstowym obiektu)."
 
 msgctxt "note=*, fixme=*, description=*"
 msgid "Similar but different tags:"
-msgstr "Podobne, ale inne tagi:"
+msgstr "Podobne, ale inne znaczniki:"
 
 msgctxt "the tag note=*"
 msgid "Note"
@@ -26000,7 +26076,7 @@ msgid "alternative name without {0}"
 msgstr "alternatywna nazwa bez {0}"
 
 msgid "incomplete usage of {0} on a way without {1}"
-msgstr ""
+msgstr "niepełne użycie {0} na drodze bez {1}"
 
 msgid "Same value of {0}, {1} and {2}"
 msgstr "Ta sama wartość klucza {0}, {1} i {2}"
@@ -26050,6 +26126,7 @@ msgid ""
 "''{0}'' does not specify the official mode of transportation, use ''{1}'' "
 "for example"
 msgstr ""
+"„{0}” nie określa oficjalnego trybu transportu; proszę użyć np. „{1}”"
 
 msgid ""
 "{0}={1} is unspecific. Instead of ''{1}'' please give more information about "
@@ -26119,7 +26196,7 @@ msgid "{0} is inaccurate"
 msgstr ""
 
 msgid "{0} is deprecated for {1}"
-msgstr ""
+msgstr "{0} jest przestarzały na rzecz {1}"
 
 msgid "{0} is deprecated. Use the {1}: key prefix instead."
 msgstr ""
@@ -26182,7 +26259,7 @@ msgid "node connects waterway and bridge"
 msgstr ""
 
 msgid "{0} node connected to a highway"
-msgstr ""
+msgstr "{0} węzeł połączony z drogą"
 
 msgid "suspicious roundabout direction"
 msgstr "Podejrzany kierunek ronda"
@@ -26217,6 +26294,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -26299,10 +26379,10 @@ msgid "unusual incline; use percentages/degrees or up/down"
 msgstr "Niespotykane nachylenie; użyj procentów/stopni lub do góry/w dół"
 
 msgid "{0} must be a numeric value"
-msgstr ""
+msgstr "{0} musi być wartością liczbową"
 
 msgid "{0} must be a positive integer number"
-msgstr ""
+msgstr "{0} musi być dodatnią liczbą całkowitą"
 
 msgid "unusual value of {0}"
 msgstr "Niespotykana wartość {0}"
@@ -26311,7 +26391,7 @@ msgid "relation without type"
 msgstr ""
 
 msgid "{0} relation without {0} tag"
-msgstr ""
+msgstr "{0} relacji bez znacznika {0}"
 
 msgid "religion without denomination"
 msgstr "religia bez wyznania"
@@ -26347,19 +26427,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr "Węzły powtarzają tagi linii rodzica."
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
-"nie wprowadzono języka Wikipedii, użyj „wikipedia\"=\"język:tytuł strony\""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
-msgstr "przestarzały format tagu wikipedia"
+msgid "wikipedia tag format is deprecated"
+msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr "''wikipedia''=''język:tytuł hasła''"
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr "Ukrywaj ikony przy niskim przybliżeniu"
 
@@ -26971,10 +27089,10 @@ msgstr ""
 msgid "images"
 msgstr "obrazy"
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -27022,9 +27140,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -27056,9 +27171,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr "Powiększ do wybranego obrazu"
 
@@ -27164,16 +27276,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -27227,6 +27339,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -27295,6 +27410,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -27316,6 +27437,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -27342,6 +27469,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -27356,6 +27486,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr "Pobieranie"
 
@@ -27398,18 +27531,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -27906,6 +28027,9 @@ msgstr "Budynek:"
 msgid "Tags:"
 msgstr "Znaczniki:"
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "Nazwa:"
 
@@ -27939,6 +28063,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -28026,12 +28155,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -28132,9 +28287,6 @@ msgstr "Nie znaleziono węzłów z adresem wewnątrz budynków"
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr "Dodaj adres"
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -28715,14 +28867,6 @@ msgstr "Usuń zaznaczony schemat z listy."
 msgid "Color Schemes"
 msgstr "Schematy kolorów"
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -28753,13 +28897,10 @@ msgstr "Konfiguruj"
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -28771,7 +28912,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -28783,22 +28927,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Masa"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
+msgstr ""
+
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "List of tags to match"
+msgstr ""
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Threshold distance"
+msgid "Matching"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid "Filtering"
 msgstr ""
 
-msgid "Centroid distance"
+msgid "Unioning"
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -28807,13 +29058,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
-msgstr "Warstwa:"
+msgid "Reference:"
+msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Zastąp geometrię"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -28846,10 +29115,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28942,6 +29226,9 @@ msgid ""
 "relation.\n"
 "Remove the area from the relation before splitting it."
 msgstr ""
+"Nie można podzielić zaznaczonego obszaru, ponieważ jego członkowie są w "
+"jakiejś relacji.\n"
+"Proszę usunąć obszar z tej relacji przed podzieleniem go."
 
 msgid "TangoGPS Files (*.log)"
 msgstr "pliki TangoGPS (*.log)"
@@ -29163,7 +29450,7 @@ msgid "Port:"
 msgstr "Port:"
 
 msgid "refresh the port list"
-msgstr "odśwież listę portów"
+msgstr "wczytaj ponownie listę portów"
 
 msgid "Configure Device"
 msgstr "Konfiguruj urządzenie"
@@ -29175,10 +29462,10 @@ msgid "configure the connected DG100"
 msgstr ""
 
 msgid "delete data after import"
-msgstr "usuń dane po imporcie"
+msgstr "usuń dane po zaimportowaniu"
 
 msgid "Importing data from device."
-msgstr ""
+msgstr "Importowanie danych z urządzenia."
 
 msgid "Importing data from DG100..."
 msgstr ""
@@ -29223,7 +29510,7 @@ msgid "Add EGPX layer"
 msgstr ""
 
 msgid "GPX Data"
-msgstr ""
+msgstr "Dane GPX"
 
 msgid "Classes element below root child level"
 msgstr ""
@@ -29241,10 +29528,10 @@ msgid "Implications element below root child level"
 msgstr ""
 
 msgid "Tag without key"
-msgstr "Brakujący klucz tagu"
+msgstr "Brakujący klucz znacznika"
 
 msgid "Tag without value (key is {0})"
-msgstr "Brakująca wartość tagu (klucz to {0})"
+msgstr "Brakująca wartość znacznika (klucz to {0})"
 
 msgid "Closed classes while it was not open"
 msgstr ""
@@ -29850,22 +30137,22 @@ msgid "Rotate 270"
 msgstr "Obrót o 270 stopni"
 
 msgid "Previous image"
-msgstr "Poprzedni obrazek"
+msgstr "Poprzedni obraz"
 
 msgid "Next image"
-msgstr "Następny obrazek"
+msgstr "Następny obraz"
 
 msgid "Rotate left"
 msgstr "Obróć w lewo"
 
 msgid "Rotate image left"
-msgstr "Obraca obrazek w lewo"
+msgstr "Obraca obraz w lewo"
 
 msgid "Rotate right"
 msgstr "Obróć w prawo"
 
 msgid "Rotate image right"
-msgstr "Obraca obrazek w prawo"
+msgstr "Obraca obraz w prawo"
 
 msgid "WayPoint Image"
 msgstr ""
@@ -29882,6 +30169,33 @@ msgstr "Importuje grafikę wektorową"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "Pliki SVG [wtyczka ImportVec] (*.svg)"
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -30133,9 +30447,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr "Zastąp geometrię"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -31397,9 +31708,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -31416,10 +31724,10 @@ msgid "Edit coordinates in separate editor"
 msgstr ""
 
 msgid "altitude"
-msgstr ""
+msgstr "wysokość"
 
 msgid "Altitude:"
-msgstr ""
+msgstr "Wysokość:"
 
 msgid "speed"
 msgstr "prędkość"
@@ -31440,7 +31748,7 @@ msgid "Direction:"
 msgstr "Kierunek:"
 
 msgid "°"
-msgstr ""
+msgstr "°"
 
 msgid "Undo changes made in this dialog"
 msgstr ""
@@ -31780,13 +32088,15 @@ msgstr ""
 
 msgid "{0} direction error"
 msgid_plural "{0} direction errors"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "{0} błąd kierunku"
+msgstr[1] "{0} błędy kierunku"
+msgstr[2] "{0} błędów kierunku"
 
 msgid "{0} road type error"
 msgid_plural "{0} road type errors"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "{0} błąd rodzaju drogi"
+msgstr[1] "{0} błędy rodzaju drogi"
+msgstr[2] "{0} błędów rodzaju drogi"
 
 msgid "How do you want to proceed?"
 msgstr ""
@@ -32380,6 +32690,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -32509,9 +32825,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr "Prędkość (km/h)"
 
-msgid "Weight"
-msgstr "Masa"
-
 msgid "Enter weight values"
 msgstr ""
 
@@ -32835,7 +33148,7 @@ msgid "{0} start"
 msgstr "{0} start"
 
 msgid "{0} end"
-msgstr ""
+msgstr "{0} koniec"
 
 msgid "Waypoint Description"
 msgstr ""
@@ -33640,11 +33953,15 @@ msgid ""
 "In the following table you can edit the <strong>raw tags</strong> of the OSM "
 "relation representing this turn restriction."
 msgstr ""
+"Poniższa tabela umożliwia modyfikowanie <strong>znaczników</strong> relacji "
+"reprezentującej to ograniczenie skrętu."
 
 msgid ""
 "In the following table you can edit the <strong>raw members</strong> of the "
 "OSM relation representing this turn restriction."
 msgstr ""
+"Poniższa tabela umożliwia modyfikowanie <strong>członków</strong> relacji "
+"reprezentującej to ograniczenie skrętu."
 
 msgid "Type:"
 msgstr "Typ:"
@@ -33788,13 +34105,13 @@ msgid "Already participating in a conflict"
 msgstr "Już uczestniczy w konflikcie"
 
 msgid "Delete this turn restriction"
-msgstr "Usuń to ograniczenie skrętu"
+msgstr "Usuwa to ograniczenie skrętu"
 
 msgid "Select this turn restriction"
-msgstr "Zaznacz to ograniczenie skrętu"
+msgstr "Zaznacza to ograniczenie skrętu"
 
 msgid "Activate the layer this turn restriction belongs to and zoom to it"
-msgstr "Aktywuj warstwę, do której należy to ograniczenie, i przybliż je"
+msgstr "Uaktywnia warstwę ograniczenia i przybliża do niego widok"
 
 msgid "{0} warning"
 msgid_plural "{0} warnings"
@@ -33809,19 +34126,19 @@ msgstr[1] "{0} błędy"
 msgstr[2] "{0} błędów"
 
 msgid "no issues"
-msgstr "brak problemów"
+msgstr "Brak problemów"
 
 msgid "please select a way"
 msgstr "proszę wybrać drogę"
 
 msgid "multiple objects with role ''{0}''"
-msgstr "wiele obiektów z rolą „{0}''"
+msgstr "wiele obiektów z rolą „{0}”"
 
 msgid "Delete from turn restriction"
 msgstr "Usuwa z ograniczenia skrętu"
 
 msgid "Accept the currently selected way"
-msgstr "Zaakceptuj obecnie wybraną drogę"
+msgstr "Akceptuje obecnie zaznaczoną drogę"
 
 msgid "Paste from the clipboard"
 msgstr "Wstaw ze schowka"
@@ -33865,17 +34182,18 @@ msgid ""
 "Select the vehicle types this turn restriction is <strong>not</strong> "
 "applicable for."
 msgstr ""
-"Wybierz rodzaje pojazdów, których te ograniczenie skrętu "
-"<strong>nie</strong> obejmuje."
+"Rodzaje pojazdów, których to ograniczenie skrętu <strong>nie</strong> "
+"obowiązuje:"
 
 msgid "Public Service Vehicles"
 msgstr "Pojazdy transportu publicznego"
 
 msgid "Public service vehicles like buses, tramways, etc."
-msgstr "Pojazdy transportu publicznego takie jak autobusy, tramwaje, itp."
+msgstr ""
+"Wyklucza pojazdy transportu publicznego takie jak autobusy, tramwaje, itp."
 
 msgid "Heavy Goods Vehicles"
-msgstr "Duże samochody ciężarowe (TIR)"
+msgstr "Samochody ciężarowe"
 
 msgid "Motorcars"
 msgstr "Samochody osobowe"
@@ -33924,22 +34242,21 @@ msgid "To:"
 msgstr "Do:"
 
 msgid "no participating way with role ''from''"
-msgstr ""
+msgstr "brak przynależącej drogi z rolą „from”"
 
 msgid "no participating way with role ''to''"
-msgstr ""
+msgstr "brak przynależącej drogi z rolą „to”"
 
 msgid "Only participating in selection"
-msgstr ""
+msgstr "Tylko należące do zaznaczenia"
 
 msgid ""
 "<html>Select to display turn restrictions related to object in the current "
 "selection only.<br>Deselect to display all turn restrictions in the current "
 "data set.</html>"
 msgstr ""
-"<html>Zaznacz by wyświetlić jedynie ograniczenia skrętu odnoszące się tylko "
-"do wybranych obiektów.<br>Odznacz by wyświetlić wszystkie ograniczenia "
-"skrętów z bieżącego zestawu danych.</html>"
+"<html>Wyświetla ograniczenia odnoszące się tylko do wybranych "
+"obiektów.</html>"
 
 msgid "Turn Restrictions"
 msgstr "Ograniczenia skrętu"
@@ -33949,25 +34266,25 @@ msgstr ""
 "Wyświetla i zarządza ograniczeniami skrętu w aktualnym zestawie danych"
 
 msgid "Open an editor for the selected turn restriction"
-msgstr "Otwórz edytor dla wybranego ograniczenia skrętu"
+msgstr "Otwiera wybrane ograniczenie skrętu w edytorze"
 
 msgid "Delete the selected turn restriction"
 msgstr "Usuwa wybrane ograniczenie skrętu"
 
 msgid "Create a new turn restriction"
-msgstr "Utwórz nowe ograniczenie skrętu"
+msgstr "Tworzy nowe ograniczenie skrętu"
 
 msgid "Set the current JOSM selection to the selected turn restrictions"
-msgstr "Ustawia zaznaczenie dla wybranego ograniczenia skrętu"
+msgstr "Ustala zaznaczenie dla wybranego ograniczenia skrętu"
 
 msgid "Select in current data layer"
-msgstr "Zaznacz w bieżącej warstwie danych"
+msgstr "Zaznacz na aktualnej warstwie danych"
 
 msgid "Zoom to the currently selected turn restrictions"
-msgstr "Powiększa do obecnie wybranego ograniczenia skrętu"
+msgstr "Przybliża widok do wybranego ograniczenia skrętu"
 
 msgid "An OSM plugin for editing turn restrictions."
-msgstr "Wtyczka OSM do edycji ograniczeń skrętów."
+msgstr "Konfiguruje ustawienia wtyczki OSM do edycji ograniczeń skrętów"
 
 msgid ""
 "Development of the turn restriction plugin was sponsored by <a "
@@ -33987,21 +34304,20 @@ msgid ""
 "restriction. If enabled, one can edit them in the Basic editor too. If "
 "disabled, editing of via-objects is possible in the Advanced Editor only."
 msgstr ""
-"Edytor Podstawowy może opcjonalnie wyświetlić listę obiektów pośrednich "
-"ograniczenia skrętu. Jeśli funkcja jest włączone, można edytować je także w "
-"Edytorze Podstawowym. Jeśli wyłączona, edycja obiektów pośrednich jest "
-"możliwa tylko w Edytorze Zaawansowanym."
+"Edytor podstawowy może opcjonalnie wyświetlić listę obiektów pośrednich "
+"ograniczenia skrętu. Jeśli funkcja jest włączona, można edytować je także w "
+"edytorze podstawowym. Jeśli wyłączona, edycja obiektów pośrednich jest "
+"możliwa tylko w edytorze zaawansowanym."
 
 msgid "Display and edit list of via-objects in the Basic Editor"
 msgstr ""
-"Wyświetlaj i edytuj listę obiektów pośrednich ograniczenia w Edytorze "
-"Podstawowym."
+"Wyświetlanie i modyfikowanie listy obiektów pośrednich w edytorze podstawowym"
 
 msgid "Road signs - Set A"
-msgstr "Znaki drogowe - Zestaw A"
+msgstr "Znaki drogowe - zestaw A"
 
 msgid "Road signs - Set B"
-msgstr "Znaki drogowe - Zestaw B"
+msgstr "Znaki drogowe - zestaw B"
 
 msgid "Please select the set of road sign icons to be used in the plugin."
 msgstr ""
@@ -34011,7 +34327,7 @@ msgid ""
 "Warning: the preference with key ''{0}'' has an unsupported value ''{1}''. "
 "Assuming the default value ''set-a''."
 msgstr ""
-"Ostrzeżenie: klucz preferencji  „{0}'' ma nieprawidłową wartość  „{1}”. "
+"Ostrzeżenie: klucz preferencji  „{0}” ma nieprawidłową wartość „{1}”. "
 "Przyjmuję wartość domyślną „set-a”."
 
 msgid ""
@@ -34022,16 +34338,16 @@ msgid ""
 msgstr ""
 
 msgid "Delete ''from''"
-msgstr ""
+msgstr "Usuń „from”"
 
 msgid "Removes the member with role ''from''"
-msgstr ""
+msgstr "Usuwa członka z rolą „from”"
 
 msgid "Delete ''to''"
-msgstr ""
+msgstr "Usuń „to”"
 
 msgid "Removes the member with role ''to''"
-msgstr "Usuwa członka z rolą „to\""
+msgstr "Usuwa członka z rolą „to”"
 
 msgid "Fix in editor"
 msgstr "Napraw w edytorze"
@@ -34081,13 +34397,13 @@ msgstr ""
 "to w Edytorze Podstawowym."
 
 msgid "A way with role <tt>from</tt> is required in a turn restriction."
-msgstr ""
+msgstr "Ograniczenie skrętu wymaga drogi z rolą <tt>from</tt>."
 
 msgid "A way with role <tt>to</tt> is required in a turn restriction."
-msgstr ""
+msgstr "Ograniczenie skrętu wymaga drogi z rolą <tt>to</tt>."
 
 msgid "Please go to the Basic editor and manually choose a way."
-msgstr "Proszę przejść do Edytora Podstawowego i ręcznie wybrać drogę."
+msgstr "Proszę przejść do edytora podstawowego i ręcznie wybrać drogę."
 
 msgid "Add in editor"
 msgstr "Dodaj w edytorze"
@@ -34107,6 +34423,8 @@ msgid ""
 "Make sure you add one or more via objects (nodes or ways) to the turn "
 "restriction."
 msgstr ""
+"Proszę upewnić się, że dodano jeden lub więcej obiektów pośrednich (węzłów "
+"lub linii) do ograniczenia skrętu."
 
 msgid "Go to the Advanced Editor and add via objects"
 msgstr "Przejdź do zaawansowanego edytora i dodaj obiekty „przez”."
@@ -34115,11 +34433,15 @@ msgid ""
 "A turn restriction requires exactly one way with role <tt>from</tt>. This "
 "turn restriction has {0} ways in this role. Please remove {1} of them."
 msgstr ""
+"Ograniczenie skrętu wymaga dokładnie jednej drogi z rolą <tt>from</tt>. To "
+"ograniczenie skrętu ma {0} dróg z tą rolą. Proszę usunąć {1} z nich."
 
 msgid ""
 "A turn restriction requires exactly one way with role <tt>to</tt>. This turn "
 "restriction has {0} ways in this role. Please remove {1} of them."
 msgstr ""
+"Ograniczenie skrętu wymaga dokładnie jednej drogi z rolą <tt>to</tt>. To "
+"ograniczenie skrętu ma {0} dróg z tą rolą. Proszę usunąć {1} z nich."
 
 msgid "Go to the Advanced Editor and remove the members"
 msgstr "Przejdz do zaawansowanego edytora i usuń obiekty z relacji."
@@ -34133,7 +34455,7 @@ msgid "Go to Basic Editor and select standard vehicle type based exceptions"
 msgstr ""
 
 msgid "The required tag <tt>{0}={1}</tt> is missing."
-msgstr "Brakuje wymaganego tagu  <tt>{0}={1}</tt>."
+msgstr "Brakuje wymaganego znacznika <tt>{0}={1}</tt>."
 
 msgid "Add missing tag"
 msgstr "Dodaj brakujący tag"
@@ -34215,25 +34537,26 @@ msgid "Close dialog and cancel"
 msgstr ""
 
 msgid "Add nodes at intersections"
-msgstr "Dodaj węzły na skrzyżowaniach"
+msgstr "Dodaj węzły na przecięciach"
 
 msgid "Add missing nodes at intersections of selected ways."
-msgstr "Dodaje brakujące węzły na skrzyżowaniach zaznaczonych linii."
+msgstr "Dodaje brakujące węzły na przecięciach zaznaczonych linii."
 
 msgid "Please select one or more ways with intersections of segments."
 msgstr ""
+"Proszę zaznaczyć jedną lub więcej linii z przecinającymi się segmentami."
 
 msgid "Align Way Nodes"
 msgstr "Wyrównaj węzły linii"
 
 msgid "Align nodes in a way"
-msgstr "Wyrównaj węzły na linii"
+msgstr "Wyrównuje węzły na linii"
 
 msgid "The way with selected nodes can not be straightened."
 msgstr "Linia z wybranymi węzłami nie może zostać wyrównana."
 
 msgid "Internal error: number of nodes is {0}."
-msgstr ""
+msgstr "Wewnętrzny błąd: liczba węzłów wynosi {0}."
 
 msgid "Copy all tags of selected objects to paste buffer."
 msgstr ""
@@ -34242,7 +34565,7 @@ msgid "Extract node"
 msgstr "Wydziel węzeł"
 
 msgid "Extracts node from a way"
-msgstr "Wydziela węzeł z linii."
+msgstr "Wydziela węzeł z linii"
 
 msgid ""
 "This tool extracts node from its ways and requires single node to be "
@@ -34306,23 +34629,24 @@ msgid ""
 msgstr ""
 
 msgid "Copy tags from previous selection"
-msgstr "Skopiuj tagi z poprzedniego zaznaczenia"
+msgstr "Skopiuj znaczniki z poprzedniego zaznaczenia"
 
 msgid "Pastes tags of previously selected object(s)"
-msgstr ""
+msgstr "Wkleja znaczniki poprzednio zaznaczonych obiektów"
 
 msgid "Add Source Tag"
 msgstr "Dodaj znacznik source"
 
 msgid "Add remembered source tag"
-msgstr "Dodaje zapamiętane źródło informacji."
+msgstr "Dodaje zapamiętany znacznik źródła"
 
 msgid "UnGlue Relation"
-msgstr "Rozłączenie relacji"
+msgstr "Rozłącz relację"
 
 msgid ""
 "Duplicate nodes, ways and relations that are used by multiple relations."
 msgstr ""
+"Powiela węzły, linie i relacje używane przez więcej niż jedną relację"
 
 msgid "UnGlue Relations"
 msgstr "Rozłączenie relacji"
@@ -34337,7 +34661,7 @@ msgid "Circle arc"
 msgstr "Zaokrąglij"
 
 msgid "Create a circle arc"
-msgstr "Zaokrąglij zaznaczony obiekt"
+msgstr "Zaokrągla zaznaczony obiekt"
 
 msgid "Select custom URL"
 msgstr "Wybierz własny adres URL"
@@ -34361,7 +34685,7 @@ msgid "Utilsplugin2 settings"
 msgstr "Ustawienia Utilsplugin2"
 
 msgid "Here you can change some preferences of Utilsplugin2 functions"
-msgstr "Tu można zmienić niektóre ustawienia funkcji Utilsplugin2"
+msgstr "Zmienia niektóre ustawienia funkcji Utilsplugin2"
 
 msgid "Save to file"
 msgstr "Zapisz do pliku"
diff --git a/i18n/po/pt.po b/i18n/po/pt.po
index c5b24ea..df4decc 100644
--- a/i18n/po/pt.po
+++ b/i18n/po/pt.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2017-02-23 13:48+0000\n"
 "Last-Translator: Rui <xande6ruz at yandex.com>\n"
 "Language-Team: Portuguese <pt at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:10+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:06+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: pt\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1535,8 +1535,8 @@ msgstr "Desenhar linhas entre os pontos GPS."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Alternar as definições globais ''{0}''."
 
-msgid "Encourage/discourage upload"
-msgstr "Encorajar/desencorajar o envio"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "Desligar Linhas"
@@ -8706,6 +8706,12 @@ msgstr ""
 "abrir a janela manualmente no menu ''Ficheiro - Descarregar do "
 "OpenStreetMap''.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -10213,6 +10219,9 @@ msgstr "Versão API: {0}"
 msgid "Upload is discouraged"
 msgstr "Não é recomendado enviar"
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Converter numa camada GPX (GPS)"
 
@@ -16226,6 +16235,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "residencial"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "matagal"
@@ -16234,6 +16251,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "estrada associada"
@@ -16679,6 +16700,18 @@ msgstr "VoGIS: Höhen und Gelände"
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -16691,9 +16724,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr imagens numéricas (2013)"
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr "URBISnl imagens numéricas (2013)"
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr "URBIS 2009 imagens aéreas"
 
@@ -16706,6 +16745,9 @@ msgstr "URBIS 2014 imagens aéreas"
 msgid "URBIS 2015 aerial imagery"
 msgstr "URBIS 2015 imagens aéreas"
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr "SPW(allonie) PICC numerical imagery"
 
@@ -17502,14 +17544,11 @@ msgstr "Zurique - Stadt Übersichtsplan (Strassen, Gebäude, Hausnummer)"
 msgid "Stadt Zürich Luftbild 2011"
 msgstr "Zurique - Stadt Luftbild 2011"
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
-"Suíça - cantão de Solothurn - imagens aéreas RGB (SOGIS 2013/2014/2015)"
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
-"Suíça - cantão de Solothurn - imagens aéreas infravermelhos (SOGIS "
-"2013/2014/2015)"
 
 msgid "Canton de Génève 5cm (SITG 2011)"
 msgstr "Cantão de Genebra 5cm (SITG 2011)"
@@ -17628,8 +17667,8 @@ msgstr "Texas Ortofoto"
 msgid "Philadelphia 2015 Imagery"
 msgstr "Filadélfia 2015 Imagens Aéreas"
 
-msgid "MD 2014 6 Inch Aerial Imagery"
-msgstr "MD 2014 6 Polegadas Imagens Aéreas"
+msgid "MD Latest 6 Inch Aerial Imagery"
+msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
 msgstr "MD 3 Polegadas Imagens Aéreas"
@@ -17964,6 +18003,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -18005,8 +18049,8 @@ msgstr ""
 "Fornece uma linha de comandos e permite a criação de comandos. Ver o link "
 "para comandos padrão (arc, cicle, etc.)"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
-msgstr "(Aviso: Experimental!) Ferramenta para unir dados."
+msgid "Tool for conflating data (matching and merging)."
+msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
 msgstr "Descarrega dados do OpenStreetMap à medida que se deloca o mapa."
@@ -18155,6 +18199,11 @@ msgstr "Módulo para importar imagens espaciais geo-referenciadas"
 msgid "Import vector graphics (SVG)"
 msgstr "Importar ficheiros vetoriais no formato SVG"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -18387,6 +18436,11 @@ msgid "Plugin for reverting changesets"
 msgstr "Módulo para reverter conjuntos de alterações"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -26864,6 +26918,9 @@ msgstr ""
 "{0} é a etiqueta para a hidrovia linear. Para áreas de água usar antes {1} + "
 "{2}."
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr "nome abreviado da rua"
 
@@ -27003,19 +27060,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr "Nós com etiquetas iguais às da da própria linha"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
-"sem indicação da língua na Wikipédia, usar ''wikipedia''=''língua:página''"
 
-msgid "unknown language prefix in wikipedia tag"
-msgstr "prefixo de língua desconhedido na etiqueta wikipédia"
+msgid "wikipedia tag has an unknown language prefix"
+msgstr ""
 
-msgid "deprecated format for wikipedia tag"
-msgstr "formato em desuso da etiqueta da wikipédia"
+msgid "wikipedia tag format is deprecated"
+msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr "''wikipedia''=''língua:página''"
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr "Esconder ícones em aproximações de vista baixas"
 
@@ -27651,11 +27746,11 @@ msgstr "Total de imagens:"
 msgid "images"
 msgstr "imagens"
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
-msgstr "Fonte do sinal de tráfego ''{0}'' estava no formato errado"
+msgid "Mapillary object layer"
+msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
-msgstr "Não foi possível ler o ficheiro da fonte de ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
+msgstr ""
 
 msgid "Mapillary"
 msgstr "Mapillary"
@@ -27702,9 +27797,6 @@ msgstr "Modo de unir"
 msgid "Join/unjoin pictures"
 msgstr "Unir/Separar imagens"
 
-msgid "Join Mapillary pictures"
-msgstr "Unir imagens Mapillary"
-
 msgid "Submit changeset"
 msgstr "Enviar conjunto de alterações"
 
@@ -27736,9 +27828,6 @@ msgstr "Enviar imagens."
 msgid "Walk mode"
 msgstr "Modo a pé"
 
-msgid "Start walk mode"
-msgstr "COmeçar modo a pé"
-
 msgid "Zoom to selected image"
 msgstr "Aproximar a imagem selecionada"
 
@@ -27844,18 +27933,18 @@ msgstr "Histórico Mapillary"
 msgid "Open Mapillary history dialog"
 msgstr "Abrir janela do histórico Mapillary"
 
+msgid "No image selected"
+msgstr "Nenhuma imagem selecionada"
+
+msgid "Press \"{0}\" to download images"
+msgstr ""
+
 msgid "Mapillary picture"
 msgstr "Imagem Mapillary"
 
 msgid "Open Mapillary window"
 msgstr "Abrir janela Mapillary"
 
-msgid "Mapillary dialog"
-msgstr "Janela Mapillary"
-
-msgid "Open Mapillary main dialog"
-msgstr "Abrir janela principal do Mapillary"
-
 msgid "Next picture"
 msgstr "Imagem seguinte"
 
@@ -27907,6 +27996,9 @@ msgstr "Ver a localização da imagem seguinte com os botões seguinte/anterior"
 msgid "Preview images when hovering its icon"
 msgstr "Pré-visualizar imagens ao passar com o cursor sobre o ícone"
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr "Modo de descarregamento"
 
@@ -27978,6 +28070,12 @@ msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 "Mostra informação detalhada sobre a imagem atual selecionada do Mapillary"
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr "Adicionar etiqueta Mapillary"
 
@@ -27999,6 +28097,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr "Não foi possível abrir o URL {0} no navegador de internet"
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] "{0} imagem eliminada"
@@ -28025,6 +28129,9 @@ msgstr[1] "Viradas {0} imagens"
 msgid "2 images unjoined"
 msgstr "2 imagens separadas"
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr "tudo na área visível"
 
@@ -28039,6 +28146,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr "A descarregar"
 
@@ -28083,18 +28193,6 @@ msgstr "Não autenticado no Mapillary"
 msgid "Uploading: {0}"
 msgstr "A enviar: {0}"
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr "NanoLog"
 
@@ -28704,6 +28802,9 @@ msgstr "Edifício:"
 msgid "Tags:"
 msgstr "Etiquetas:"
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "Nome:"
 
@@ -28737,6 +28838,11 @@ msgstr ""
 msgid "Created area"
 msgstr "Área criada"
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr "Não foi possível detetar um polígono onde clicou."
 
@@ -28830,12 +28936,38 @@ msgstr "fundir nós"
 msgid "Merge nodes with existing nodes"
 msgstr "Fundir nós nos nós existentes"
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr "Depuração (debug)"
 
 msgid "Debugging mode will write images for each processing step."
 msgstr "O modo de depuração grava imagens para cada passo do processamento"
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -28942,9 +29074,6 @@ msgstr "Não foram encontrados nós com endereços dentro de edifícios"
 msgid "on polygon"
 msgstr "no polígono"
 
-msgid "Add address"
-msgstr "Adicionar endereço"
-
 msgid "Helping tool for tag address"
 msgstr "Ferramenta de ajuda para etiquetas de endereços"
 
@@ -29592,14 +29721,6 @@ msgstr "Eliminar o esquema de cores da lista."
 msgid "Color Schemes"
 msgstr "Esquema de Cores"
 
-msgid "Conflate object pair"
-msgstr "Fundir par do objeto"
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] "Adicionado {0} objeto à camada sujeita a fusão"
-msgstr[1] "Adicionados {0} objetos à camada sujeita a fusão"
-
 msgid "Conflation"
 msgstr "Fusão de dados"
 
@@ -29630,15 +29751,12 @@ msgstr "Configurar"
 msgid "Configure conflation options"
 msgstr "Configurar opções de fusão de dados"
 
-msgid "Delete {0} conflation matches"
-msgstr "Eliminar {0} correspondências de fusão"
-
-msgid "Remove {0} unmatched objects"
-msgstr "Remover {0} objetos sem correspondência"
-
 msgid "Remove selected matches"
 msgstr "Remover correspondências selecionadas"
 
+msgid "Remove ({0})"
+msgstr ""
+
 msgid "Conflate"
 msgstr "Fundir dados"
 
@@ -29648,8 +29766,11 @@ msgstr "Fundir objetos selecionados"
 msgid "Conflation: {0}"
 msgstr "Fusão: {0}"
 
-msgid "Cannot replace geometry."
-msgstr "Não foi possível substituir a geometria."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
+msgstr ""
 
 msgid "Zoom to selected primitive(s)"
 msgstr "Aproximar vista aos objetos selecionados"
@@ -29660,23 +29781,130 @@ msgstr "Selecionar objetos selecionados"
 msgid "Select the primitives currently selected in the list"
 msgstr "Selecione os objetos atualmente selecionados na lista"
 
-msgid "Match finder settings"
-msgstr "Definições do pesquisador de correspondências"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
 
-msgid "Match finder method"
-msgstr "Método do pesquisador de correspondências"
+msgid "Sorting scores"
+msgstr ""
 
-msgid "Threshold distance"
-msgstr "Limiar de distância"
+msgid "Discarding inferior matches"
+msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
-msgstr "Distâncias maiores que isto não terão correspondências."
+msgid "Subject"
+msgstr "Sujeito a fusão"
 
-msgid "Centroid distance"
-msgstr "Distância centroide"
+msgid "Conflate object pair"
+msgstr "Fundir par do objeto"
+
+msgid "Cannot replace geometry."
+msgstr "Não foi possível substituir a geometria."
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] "Adicionado {0} objeto à camada sujeita a fusão"
+msgstr[1] "Adicionados {0} objetos à camada sujeita a fusão"
 
-msgid "Hausdorff distance"
-msgstr "Distância Hausdorff"
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr "Remover {0} objetos sem correspondência"
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Tipo"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
+msgstr ""
+
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
+msgstr ""
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
+
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
+msgstr ""
 
 msgid "Configure conflation settings"
 msgstr "Configurar definições de fusão"
@@ -29684,14 +29912,32 @@ msgstr "Configurar definições de fusão"
 msgid "Generate matches"
 msgstr "Gerar correspondências"
 
-msgid "Layer:"
-msgstr "Camada:"
+msgid "Reference:"
+msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
-msgstr "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
+msgstr ""
 
-msgid "Subject"
-msgstr "Sujeito a fusão"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Substituir Geometria (mantém histórico de autores)"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
+msgstr ""
 
 msgid "Selections must be made for both reference and subject."
 msgstr "As seleções devem ser feitas para a referência e o sujeito a fusão"
@@ -29723,11 +29969,26 @@ msgstr "Seleção vazia"
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
-msgstr "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
+msgstr ""
 
-msgid "Invalid reference or subject"
-msgstr "Referência ou sujeito a fusão inválidos"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
+msgstr ""
 
 msgid "Download OSM data continuously"
 msgstr "Descarregar dados do OpenStreetMap continuadamente"
@@ -30828,6 +31089,33 @@ msgstr "Importar gráficos vetoriais"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "Ficheiros SVG [módulo ImportVec] (*.svg)"
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -31085,9 +31373,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr "Substituir Geometria (mantém histórico de autores)"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -32438,9 +32723,6 @@ msgstr "Editar Dados GPS da Imagem"
 msgid "Please select an image first."
 msgstr "Selecione primeiro uma imagem."
 
-msgid "No image selected"
-msgstr "Nenhuma imagem selecionada"
-
 msgid "(Empty values delete the according fields.)"
 msgstr "(Valores em branco eliminarão os campos relacionados.)"
 
@@ -33450,6 +33732,12 @@ msgstr ""
 "Aviso: elemento final ''{0}'' não suportado existente no conjunto de "
 "alterações na posição ({1},{2}). A ignorar."
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr "Módulo Sinais de Trânsito"
 
@@ -33583,9 +33871,6 @@ msgstr "Configurar velocidades máximas por tipo de estrada do módulo Rota."
 msgid "Speed (Km/h)"
 msgstr "Velocidade máxima (km/h)"
 
-msgid "Weight"
-msgstr "Tipo"
-
 msgid "Enter weight values"
 msgstr "Introduza o tipo e a velocidade máxima"
 
diff --git a/i18n/po/pt_BR.po b/i18n/po/pt_BR.po
index e1b7b96..e5dd70c 100644
--- a/i18n/po/pt_BR.po
+++ b/i18n/po/pt_BR.po
@@ -8,16 +8,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
-"PO-Revision-Date: 2017-02-24 13:55+0000\n"
-"Last-Translator: Nelson A. de Oliveira <naoliv at debian.org>\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
+"PO-Revision-Date: 2017-03-22 01:04+0000\n"
+"Last-Translator: Lucas Pereira <lucaspefreitas at gmail.com>\n"
 "Language-Team: Português Brasileiro <gnome-pt_br-list at gnome.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:22+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:17+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: pt_BR\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1516,8 +1516,8 @@ msgstr "Desenhar linhas entre pontos provenientes do gps."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Mudar a configuração global ''{0}''."
 
-msgid "Encourage/discourage upload"
-msgstr "Encorajar/desencorajar envio"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "Desgrudar caminhos"
@@ -3565,10 +3565,10 @@ msgstr ""
 "Estas imagens estão marcadas em outros editores como a melhor nesta região"
 
 msgid "{0} mirror server {1}"
-msgstr ""
+msgstr "{0} servidor alternativo {1}"
 
 msgid "{0} mirror server"
-msgstr ""
+msgstr "{0} servidor alternativo"
 
 msgid "Update default entries"
 msgstr "Atualizar entradas padrão"
@@ -8614,6 +8614,12 @@ msgstr ""
 "que o JOSM for iniciado.<br>Você pode abri-lo manualmente a partir do menu "
 "Arquivo ou barra de ferramentas.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -10108,6 +10114,9 @@ msgstr "Versão API: {0}"
 msgid "Upload is discouraged"
 msgstr "Upload não é aconselhado"
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Converter para camada GPX"
 
@@ -12712,16 +12721,16 @@ msgid "Configure the list of sites where plugins are downloaded from"
 msgstr "Configurar a lista de sites de onde os plugins são transferidos"
 
 msgid "Load from list..."
-msgstr ""
+msgstr "Carregar a partir da lista..."
 
 msgid "Load plugins from a list of plugins"
-msgstr ""
+msgstr "Carregar plugins a partir da lista de plugins"
 
 msgid "Disable all other plugins"
 msgstr "Desabilitar todos os outros plugins"
 
 msgid "Enter a list of plugins you want to download."
-msgstr ""
+msgstr "Liste os plugins que deseja fazer o download."
 
 msgid ""
 "You should add one plugin id per line, version information is ignored."
@@ -12731,7 +12740,7 @@ msgid "You can copy+paste the list of a status report here."
 msgstr ""
 
 msgid "Load plugins from list"
-msgstr ""
+msgstr "Carregar plugins a partir da lista"
 
 msgid "The following plugins were not found. Continue anyway?"
 msgstr ""
@@ -16026,6 +16035,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "residencial"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "arbusto"
@@ -16034,6 +16051,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr "floresta"
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "associatedStreet"
@@ -16479,6 +16500,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -16491,9 +16524,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr numerical imagery (2013)"
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr "URBISnl numerical imagery (2013)"
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr "URBIS 2009 aerial imagery"
 
@@ -16506,6 +16545,9 @@ msgstr "URBIS 2014 aerial imagery"
 msgid "URBIS 2015 aerial imagery"
 msgstr "URBIS 2015 aerial imagery"
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr "SPW(allonie) PICC numerical imagery"
 
@@ -17300,10 +17342,10 @@ msgstr "Stadt Zürich Übersichtsplan (Strassen, Gebäude, Hausnummer)"
 msgid "Stadt Zürich Luftbild 2011"
 msgstr "Stadt Zürich Luftbild 2011"
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -17423,7 +17465,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -17762,6 +17804,11 @@ msgstr ""
 "camadas de fundo. Otimizado para basemap.at."
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -17806,8 +17853,8 @@ msgstr ""
 "Implementa uma linha de comando e permite criar seus comandos. Veja o link "
 "para os comandos padrão (arco, círculo, etc.)"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
-msgstr "(Aviso: Experimental!) Ferramenta para misturar (fundir) dados."
+msgid "Tool for conflating data (matching and merging)."
+msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
 msgstr "Faz download de novos dados ao movimentar o mapa"
@@ -17950,6 +17997,11 @@ msgstr "Plugin para importar imagens espaciais referenciados"
 msgid "Import vector graphics (SVG)"
 msgstr "Importar gráficos vetoriais (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -18161,6 +18213,11 @@ msgid "Plugin for reverting changesets"
 msgstr "Plugin para revertir changesets"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -18453,7 +18510,7 @@ msgstr "Impossível para veículos de rodas"
 
 msgctxt "riding"
 msgid "horse_riding"
-msgstr ""
+msgstr "centro hípico"
 
 msgctxt "riding"
 msgid "pitch"
@@ -18566,23 +18623,23 @@ msgid "crossover"
 msgstr "travessão"
 
 msgid "Electrified"
-msgstr "Eletrificado"
+msgstr "Eletrificação"
 
 msgctxt "electrified"
 msgid "contact_line"
-msgstr ""
+msgstr "catenária"
 
 msgctxt "electrified"
 msgid "no"
-msgstr ""
+msgstr "não"
 
 msgctxt "electrified"
 msgid "yes"
-msgstr ""
+msgstr "sim"
 
 msgctxt "electrified"
 msgid "rail"
-msgstr ""
+msgstr "terceiro trilho"
 
 msgid "Voltage in Volts (V)"
 msgstr "Voltagem em volts (V)"
@@ -19716,7 +19773,7 @@ msgid "Motor vehicles"
 msgstr "Veículos a motor"
 
 msgid "Light Commercial Vehicles (goods)"
-msgstr ""
+msgstr "Veículos Leves Comerciais (bens)"
 
 msgid "Heavy Goods Vehicles (hgv)"
 msgstr "Veículos de Carga Pesada (hgv)"
@@ -19785,7 +19842,7 @@ msgid "Ford"
 msgstr "Vau"
 
 msgid "stepping_stones"
-msgstr ""
+msgstr "caminho de pedras"
 
 msgid "Ways"
 msgstr "Vias"
@@ -20344,7 +20401,7 @@ msgid "Kerb"
 msgstr "Meio-fio"
 
 msgid "Tactile paving"
-msgstr ""
+msgstr "Piso tátil"
 
 msgid "Entrance (Barrier Opening)"
 msgstr "Entrada (Barreira de Abertura)"
@@ -20438,7 +20495,7 @@ msgid "River"
 msgstr "Rio"
 
 msgid "Lock"
-msgstr ""
+msgstr "Comporta"
 
 msgid "Canal"
 msgstr "Canal Navegável"
@@ -20475,25 +20532,25 @@ msgid "Basin"
 msgstr "Bacia"
 
 msgid "retention"
-msgstr ""
+msgstr "retenção"
 
 msgid "infiltration"
-msgstr ""
+msgstr "infiltração"
 
 msgid "detention"
-msgstr ""
+msgstr "detenção"
 
 msgid "Reservoir"
 msgstr "Reservatório"
 
 msgid "evaporator"
-msgstr ""
+msgstr "evaporador"
 
 msgid "tailings"
-msgstr ""
+msgstr "rejeitos"
 
 msgid "water_storage"
-msgstr ""
+msgstr "armazenagem de água"
 
 msgid "Covered Reservoir"
 msgstr "Reservatório coberto"
@@ -20773,7 +20830,7 @@ msgid "Pier"
 msgstr "Pier"
 
 msgid "Mooring"
-msgstr "Mooring"
+msgstr "Amarração"
 
 msgid "commercial"
 msgstr "comercial"
@@ -21077,7 +21134,7 @@ msgid "Scooter"
 msgstr ""
 
 msgid "Truck"
-msgstr ""
+msgstr "Caminhão"
 
 msgid "Number of Sockets:"
 msgstr ""
@@ -21495,10 +21552,10 @@ msgid "Guest House/Bed & Breakfast"
 msgstr "Pousada/Dormitório com café da manhã"
 
 msgid "Apartment"
-msgstr ""
+msgstr "Apartamento"
 
 msgid "Number of apartments"
-msgstr ""
+msgstr "Número de apartamentos"
 
 msgid "Chalet"
 msgstr "Chalé"
@@ -21567,7 +21624,7 @@ msgid "Takeaway"
 msgstr "Alimento para Viagem"
 
 msgid "Delivery"
-msgstr ""
+msgstr "Entregas"
 
 msgid "Mo-Su 12:00-22:00"
 msgstr ""
@@ -22369,7 +22426,7 @@ msgid "Telephone cards"
 msgstr "Cartão Telefônico"
 
 msgid "Internet Cafe"
-msgstr ""
+msgstr "LAN house"
 
 msgid "Internet Access"
 msgstr "Acesso à Internet"
@@ -22417,7 +22474,7 @@ msgid "Shows humidity"
 msgstr "Mostra a umidade"
 
 msgid "Photo booth"
-msgstr ""
+msgstr "Cabine de fotografia instantânea"
 
 msgid "Recycling Container"
 msgstr "Container para Reciclagem"
@@ -22535,7 +22592,7 @@ msgid "Water Point"
 msgstr "Ponto de água"
 
 msgid "Animal watering place"
-msgstr ""
+msgstr "Bebedouro de animais"
 
 msgid "Compressed Air"
 msgstr "Ar comprimido"
@@ -22663,7 +22720,7 @@ msgstr "centro de esportes"
 
 msgctxt "running"
 msgid "fitness_centre"
-msgstr ""
+msgstr "academia"
 
 msgctxt "running"
 msgid "stadium"
@@ -23129,7 +23186,7 @@ msgstr "cabana"
 
 msgctxt "building"
 msgid "bungalow"
-msgstr ""
+msgstr "bangalô"
 
 msgctxt "building"
 msgid "dormitory"
@@ -24346,19 +24403,19 @@ msgid "Castle"
 msgstr "Castelo"
 
 msgid "stately"
-msgstr ""
+msgstr "casa de campo"
 
 msgid "defensive"
-msgstr ""
+msgstr "defesa"
 
 msgid "fortress"
-msgstr ""
+msgstr "fortaleza"
 
 msgid "manor"
-msgstr ""
+msgstr "mansão"
 
 msgid "palace"
-msgstr ""
+msgstr "palácio"
 
 msgid "Archaeological Site"
 msgstr "Sítio Arqueológico"
@@ -24683,7 +24740,7 @@ msgid "Bookmaker"
 msgstr "Casa de apostas"
 
 msgid "Lottery"
-msgstr "Loteria"
+msgstr "Lotérica"
 
 msgid "Bag"
 msgstr "Bolsas"
@@ -24716,7 +24773,7 @@ msgid "cigarettes"
 msgstr "cigarros"
 
 msgid "coffee"
-msgstr ""
+msgstr "café"
 
 msgid "condoms"
 msgstr "preservativos"
@@ -24734,10 +24791,10 @@ msgid "food"
 msgstr "comida"
 
 msgid "milk"
-msgstr ""
+msgstr "leite"
 
 msgid "newspapers"
-msgstr ""
+msgstr "jornais"
 
 msgid "parking_tickets"
 msgstr "bilhete de estacionamento"
@@ -24755,7 +24812,7 @@ msgid "public_transport_tickets"
 msgstr "tíquetes de transporte público"
 
 msgid "SIM_cards"
-msgstr ""
+msgstr "cartão SIM"
 
 msgid "stamps"
 msgstr "selos"
@@ -25337,13 +25394,14 @@ msgid "Scree"
 msgstr "Cascalho"
 
 msgid "An accumulation of loose angular rocks."
-msgstr ""
+msgstr "Uma acumulação de pedras pontiagudas soltas."
 
 msgid "Shingle"
 msgstr "Seixal"
 
 msgid "An accumulation of loose rounded rocks on a beach or riverbed."
 msgstr ""
+"Uma acumulação de pedras roliças soltas em uma praia ou leito de rio."
 
 msgid "Fell"
 msgstr "Vegetação de Altitude"
@@ -25630,7 +25688,7 @@ msgid "Country code"
 msgstr "Código do país"
 
 msgid "Unit/Suite"
-msgstr ""
+msgstr "Unidade/Suíte"
 
 msgid "House name"
 msgstr "Complemento"
@@ -25850,7 +25908,7 @@ msgid "Image"
 msgstr "Imagem"
 
 msgid "Contact (Schema with ''contact:*'' Prefix)"
-msgstr "Contato (esquema com o prefixo ''contato: *'')"
+msgstr "Contato (esquema com o prefixo \"contact:*\")"
 
 msgctxt "description=*"
 msgid "A short text with additional information."
@@ -26030,10 +26088,10 @@ msgid "Bicycle Route"
 msgstr "Rota de bicicleta"
 
 msgid "national"
-msgstr ""
+msgstr "nacional"
 
 msgid "local"
-msgstr ""
+msgstr "local"
 
 msgid "Mountain Biking Route"
 msgstr "Rota de Mountain Biking"
@@ -26431,7 +26489,7 @@ msgid "{0} is deprecated"
 msgstr "{0} está obsoleta"
 
 msgid "deprecated tagging"
-msgstr ""
+msgstr "etiqueta obsoleta"
 
 msgid "''{0}'' is meaningless, use more specific tags, e.g. ''{1}''"
 msgstr ""
@@ -26618,6 +26676,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr "nome da rua abreviado"
 
@@ -26755,20 +26816,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr "Nós duplicando tags pai"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
-"nenhum idioma de wikipedia dado, use ''wikipedia''=''idioma:título da "
-"página''"
 
-msgid "unknown language prefix in wikipedia tag"
-msgstr "prefixo língua desconhecida na tag wikipedia"
+msgid "wikipedia tag has an unknown language prefix"
+msgstr ""
 
-msgid "deprecated format for wikipedia tag"
-msgstr "formato depreciado para tag wikipedia"
+msgid "wikipedia tag format is deprecated"
+msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr "''wikipedia''=''idioma:título da página''"
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr "Ocultar ícones ao afastar zoom"
 
@@ -27399,10 +27497,10 @@ msgstr "Total de imagens:"
 msgid "images"
 msgstr "imagens"
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -27450,9 +27548,6 @@ msgstr "Join mode"
 msgid "Join/unjoin pictures"
 msgstr "Juntar/Desunir imagens"
 
-msgid "Join Mapillary pictures"
-msgstr "Junte-se ao Mapillary pictures"
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -27484,9 +27579,6 @@ msgstr "Enviar imagens."
 msgid "Walk mode"
 msgstr "Modo caminhada"
 
-msgid "Start walk mode"
-msgstr "Iniciar o modo de caminhada"
-
 msgid "Zoom to selected image"
 msgstr "Zoom para a imagem selecionada"
 
@@ -27592,18 +27684,18 @@ msgstr "Mapillary história"
 msgid "Open Mapillary history dialog"
 msgstr "Abrir histórico Mapillary"
 
+msgid "No image selected"
+msgstr "Nenhuma imagem selecionada"
+
+msgid "Press \"{0}\" to download images"
+msgstr ""
+
 msgid "Mapillary picture"
 msgstr "Mapillary foto"
 
 msgid "Open Mapillary window"
 msgstr "Abrir janela Mapillary"
 
-msgid "Mapillary dialog"
-msgstr "Mapillary diálogo"
-
-msgid "Open Mapillary main dialog"
-msgstr "Abrir Mapillary"
-
 msgid "Next picture"
 msgstr "Próxima foto"
 
@@ -27655,6 +27747,9 @@ msgstr "Move para a localização de fotos com os botões próximo/anterior"
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr "Modo de download"
 
@@ -27724,6 +27819,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -27745,6 +27846,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] "Apagar {0} imagem"
@@ -27771,6 +27878,9 @@ msgstr[1] "Viradas {0} imagens"
 msgid "2 images unjoined"
 msgstr "2 imagens se separaram"
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -27785,6 +27895,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr "Baixando"
 
@@ -27827,18 +27940,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr "Enviando: {0}"
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr "NanoLog"
 
@@ -28444,6 +28545,9 @@ msgstr "Edifício:"
 msgid "Tags:"
 msgstr "Tags:"
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "Nome:"
 
@@ -28478,6 +28582,11 @@ msgstr ""
 msgid "Created area"
 msgstr "Criar área"
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr "Não foi possível detectar um polígono onde você clicou."
 
@@ -28576,6 +28685,14 @@ msgstr "unir nós"
 msgid "Merge nodes with existing nodes"
 msgstr "Mesclar nós com nós existentes"
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr "Debug"
 
@@ -28583,6 +28700,24 @@ msgid "Debugging mode will write images for each processing step."
 msgstr ""
 "Modo de depuração vai escrever imagens para cada etapa de processamento."
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -28685,9 +28820,6 @@ msgstr "Nenhum nó de endereços encontrados no interior de edifícios"
 msgid "on polygon"
 msgstr "no polígono"
 
-msgid "Add address"
-msgstr "Adiciona o endereço"
-
 msgid "Helping tool for tag address"
 msgstr "Ferrametna de ajuda para tag endereços"
 
@@ -29332,14 +29464,6 @@ msgstr "Excluir o esquema selecionado da lista."
 msgid "Color Schemes"
 msgstr "Esquemas de cores"
 
-msgid "Conflate object pair"
-msgstr "Fundir objeto par"
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] "Adicionado {0} objeto a camada tema"
-msgstr[1] "Adicionado {0} objetos a camada tema"
-
 msgid "Conflation"
 msgstr "Fusão"
 
@@ -29370,15 +29494,12 @@ msgstr "Configurar"
 msgid "Configure conflation options"
 msgstr "Configurar opções de fusão"
 
-msgid "Delete {0} conflation matches"
-msgstr "Excluir {0} confluências correspondes"
-
-msgid "Remove {0} unmatched objects"
-msgstr "Remover {0} objetos não selecionados"
-
 msgid "Remove selected matches"
 msgstr "Remover selecionados"
 
+msgid "Remove ({0})"
+msgstr ""
+
 msgid "Conflate"
 msgstr "Fundir"
 
@@ -29388,8 +29509,11 @@ msgstr "Fundir objetos selecionados"
 msgid "Conflation: {0}"
 msgstr "Fusão:{0}"
 
-msgid "Cannot replace geometry."
-msgstr "Não é possível substituir a geometria."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
+msgstr ""
 
 msgid "Zoom to selected primitive(s)"
 msgstr "Zoom para primitivo(s) selecionados"
@@ -29400,23 +29524,130 @@ msgstr "Seleciona primitivo(s) selecionado(s)"
 msgid "Select the primitives currently selected in the list"
 msgstr "Seleciona os primitivos atualmente selecionados na lista"
 
-msgid "Match finder settings"
-msgstr "Configurações de localização"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr "Assunto"
+
+msgid "Conflate object pair"
+msgstr "Fundir objeto par"
+
+msgid "Cannot replace geometry."
+msgstr "Não é possível substituir a geometria."
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] "Adicionado {0} objeto a camada tema"
+msgstr[1] "Adicionado {0} objetos a camada tema"
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr "Remover {0} objetos não selecionados"
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
 
-msgid "Match finder method"
-msgstr "Método de localização"
+msgid " adjacent Reference features"
+msgstr ""
 
-msgid "Threshold distance"
-msgstr "Distância limiar"
+msgid "Weight"
+msgstr "Peso"
 
-msgid "Distances greater than this will result in a score of zero."
-msgstr "Distâncias maiores que isso irão resultar em uma pontuação de zero."
+msgid "Standard Distance"
+msgstr ""
 
-msgid "Centroid distance"
-msgstr "Distância centróide"
+msgid "below"
+msgstr ""
 
-msgid "Hausdorff distance"
-msgstr "Distância Hausdorff"
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
+msgstr ""
+
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
+msgstr ""
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
+
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
+msgstr ""
 
 msgid "Configure conflation settings"
 msgstr "Configurar as definições de fusão"
@@ -29424,14 +29655,32 @@ msgstr "Configurar as definições de fusão"
 msgid "Generate matches"
 msgstr "Gerar correspondências"
 
-msgid "Layer:"
-msgstr "Camada:"
+msgid "Reference:"
+msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
-msgstr "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
+msgstr ""
 
-msgid "Subject"
-msgstr "Assunto"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Substituir geometria"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
+msgstr ""
 
 msgid "Selections must be made for both reference and subject."
 msgstr "As seleções devem ser feitas tanto para referência e sujeito."
@@ -29463,11 +29712,26 @@ msgstr "Seleção vazia"
 msgid "Freeze reference selection"
 msgstr "Congelar referência de seleção"
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
-msgstr "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
 
-msgid "Invalid reference or subject"
-msgstr "Referência inválida ou sujeito"
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
+msgstr ""
+
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
+msgstr ""
 
 msgid "Download OSM data continuously"
 msgstr "Baixar dados do OSM continuamente"
@@ -30577,6 +30841,33 @@ msgstr "Importar gráficos vetoriais"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "Arquivo SVG[ImportVec plugin] (*.svg)"
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -30836,9 +31127,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr "Substituir geometria"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -32173,9 +32461,6 @@ msgstr "Editar dados GPS foto"
 msgid "Please select an image first."
 msgstr "Por favor, selecione uma imagem em primeiro lugar."
 
-msgid "No image selected"
-msgstr "Nenhuma imagem selecionada"
-
 msgid "(Empty values delete the according fields.)"
 msgstr "(Valores vazios excluem os campos de acordo)."
 
@@ -33180,6 +33465,12 @@ msgstr ""
 "Aviso: elemento final não suportado ''{0}'' em índice do changeset na "
 "posição ({1},{2}). Ignorando."
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr "Plug-in de aviso de estrada"
 
@@ -33309,9 +33600,6 @@ msgstr "Configurar preferências de rota."
 msgid "Speed (Km/h)"
 msgstr "Velocidade (km/h)"
 
-msgid "Weight"
-msgstr "Peso"
-
 msgid "Enter weight values"
 msgstr "Insira valores de peso"
 
diff --git a/i18n/po/rm.po b/i18n/po/rm.po
index 1b4ffa2..c489501 100644
--- a/i18n/po/rm.po
+++ b/i18n/po/rm.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2009-06-21 19:14+0000\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: Raeto-Romance <rm at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n !=1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:10+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:07+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1388,7 +1388,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7918,6 +7918,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9232,6 +9238,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14447,6 +14456,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14455,6 +14472,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14900,6 +14921,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14912,9 +14945,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14927,6 +14966,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15718,10 +15760,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15841,7 +15883,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16168,6 +16210,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16200,7 +16247,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16320,6 +16367,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16488,6 +16540,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24830,6 +24887,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24960,18 +25020,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25570,10 +25669,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25621,9 +25720,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25655,9 +25751,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25763,16 +25856,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25826,6 +25919,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25894,6 +25990,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25915,6 +26017,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25941,6 +26049,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25955,6 +26066,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25997,18 +26111,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26505,6 +26607,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26538,6 +26643,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26625,12 +26735,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26731,9 +26867,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27310,14 +27443,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27348,13 +27473,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27366,7 +27488,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27378,22 +27503,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27402,13 +27634,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27441,10 +27691,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28472,6 +28737,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28723,9 +29015,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29967,9 +30256,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30950,6 +31236,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31079,9 +31371,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/ro.po b/i18n/po/ro.po
index c2d20bc..54840c5 100644
--- a/i18n/po/ro.po
+++ b/i18n/po/ro.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: JOSM\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2015-02-24 11:34+0000\n"
 "Last-Translator: Ciprian <c1pr1an_43v3r at yahoo.com>\n"
 "Language-Team: Romanian <gnomero-list at lists.sourceforge.net>\n"
@@ -16,8 +16,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
 "== 0) && (n != 0))) ? 2: 1));\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:11+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:07+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "X-Poedit-Country: ROMANIA\n"
 "Language: ro\n"
 "X-Poedit-Language: Romanian\n"
@@ -1438,7 +1438,7 @@ msgstr "Trasează linii între puncte gps neprelucrate"
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7974,6 +7974,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9288,6 +9294,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14510,6 +14519,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14518,6 +14535,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14963,6 +14984,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14975,9 +15008,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14990,6 +15029,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15781,10 +15823,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15904,7 +15946,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16231,6 +16273,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16263,7 +16310,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16383,6 +16430,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16551,6 +16603,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24893,6 +24950,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -25023,18 +25083,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25633,10 +25732,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25684,9 +25783,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25718,9 +25814,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25826,16 +25919,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25889,6 +25982,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25957,6 +26053,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25978,6 +26080,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -26004,6 +26112,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -26018,6 +26129,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26060,18 +26174,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26568,6 +26670,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26601,6 +26706,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26688,12 +26798,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26794,9 +26930,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27373,14 +27506,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27411,13 +27536,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27429,7 +27551,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27441,22 +27566,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27465,13 +27697,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27504,10 +27754,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28535,6 +28800,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28786,9 +29078,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -30030,9 +30319,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -31013,6 +31299,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31142,9 +31434,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/ru.po b/i18n/po/ru.po
index 9a9ec16..d3ed666 100644
--- a/i18n/po/ru.po
+++ b/i18n/po/ru.po
@@ -7,17 +7,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
-"PO-Revision-Date: 2017-02-25 07:09+0000\n"
-"Last-Translator: Aleksey Kabanov <Unknown>\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
+"PO-Revision-Date: 2017-03-22 10:03+0000\n"
+"Last-Translator: Nkolay Parukhin <parukhin at gmail.com>\n"
 "Language-Team: Koptev Oleg <koptev.oleg at gmail.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:12+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:08+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: ru_RU\n"
 
 msgid "Use OAuth"
@@ -1535,8 +1535,8 @@ msgstr "Отображать линии между точками треков G
 msgid "Toggles the global setting ''{0}''."
 msgstr "Переключает глобальную настройку: ''{0}''."
 
-msgid "Encourage/discourage upload"
-msgstr "Допускать/не рекомендовать передачу на сервер"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "Разъединить точки на несколько"
@@ -8681,6 +8681,12 @@ msgstr ""
 "JOSM.<br>Его можно открыть вручную из меню «Файл» или панели "
 "инструментов.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -10232,6 +10238,9 @@ msgstr "Версия API: {0}"
 msgid "Upload is discouraged"
 msgstr "Передача не рекомендуется"
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Преобразовать в слой GPX"
 
@@ -16190,6 +16199,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "жилые кварталы"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr "зона под застройку"
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "кустарник"
@@ -16198,6 +16215,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr "лес"
 
+msgctxt "natural"
+msgid "grassland"
+msgstr "луг"
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "Улица"
@@ -16644,6 +16665,18 @@ msgstr "VoGIS: высоты и рельеф местности"
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr "Снимки с imagico.de: горные массивы Рила и Пирин"
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr "OpenStreetMap (бельгийский стиль)"
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr "AGIV Фландрия - самые новые аэрофотоснимки"
 
@@ -16656,9 +16689,15 @@ msgstr "AGIV Фландрия GRB"
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr - цифровое изображение (2013)"
 
+msgid "URBISfr numerical imagery"
+msgstr "URBISfr цифровые снимки"
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr "URBISnl - цифровое изображение (2013)"
 
+msgid "URBISnl numerical imagery"
+msgstr "URBISnl цифровые снимки"
+
 msgid "URBIS 2009 aerial imagery"
 msgstr "URBIS 2009 - аэрофотосъёмка"
 
@@ -16671,6 +16710,9 @@ msgstr "URBIS 2014 - аэрофотосъёмка"
 msgid "URBIS 2015 aerial imagery"
 msgstr "URBIS 2015 - аэрофотосъёмка"
 
+msgid "URBIS 2016 aerial imagery"
+msgstr "URBIS 2016 - аэрофотосъёмка"
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr "SPW(allonie) цифровое изображение PICC"
 
@@ -17469,12 +17511,11 @@ msgstr "Цюрих: обзорный план города (улицы, здан
 msgid "Stadt Zürich Luftbild 2011"
 msgstr "Город Цюрих: аэрофотосъёмка 2011"
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
-msgstr "Аэрофотосъёмка кантона Золотурн RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
+msgstr "Кантон Золотурн - последняя аэрофотосъемка SOGIS RGB"
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
-msgstr ""
-"Аэрофотосъёмка кантона Золотурн в ИК-диапазоне (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
+msgstr "Кантон Золотурн - последняя аэрофотосъемка SOGIS Infrared"
 
 msgid "Canton de Génève 5cm (SITG 2011)"
 msgstr "Кантон Женева 5см (SITG 2011)"
@@ -17593,8 +17634,8 @@ msgstr "Ортофото Техаса"
 msgid "Philadelphia 2015 Imagery"
 msgstr "Филадельфия - снимки 2015"
 
-msgid "MD 2014 6 Inch Aerial Imagery"
-msgstr "Мэриленд: снимки  6 дюймов, 2014"
+msgid "MD Latest 6 Inch Aerial Imagery"
+msgstr "Мэриленд: самые новые аэрофотоснимки 6\""
 
 msgid "MD Three Inch Aerial Imagery"
 msgstr "Мэриленд: снимки 3 дюйма"
@@ -17932,6 +17973,13 @@ msgstr ""
 "basemap.at."
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+"Автоматически назначает адреса выделенным объектам в Австрии. Данные: (c) "
+"Österreichisches Adressregister."
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -17974,9 +18022,8 @@ msgstr ""
 "Реализует командную строку с возможностью создания своих команд. Стандартные "
 "команды можно скачать по ссылке."
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
-"(Внимание: экспериментальный!) Инструмент для объединения (слияния) данных."
 
 msgid "Downloads new data when you pan/zoom"
 msgstr "Подкачивает новые данные при панорамировании или изменении масштаба"
@@ -18121,6 +18168,11 @@ msgstr "Модуль для импорта ссылок на пространс
 msgid "Import vector graphics (SVG)"
 msgstr "Импорт векторной графики (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 "Этот модуль упрощает рисование и редактирование коридоров внутри зданий."
@@ -18340,6 +18392,14 @@ msgid "Plugin for reverting changesets"
 msgstr "Модуль для отката пакетов правок"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+"Поэтапно превращает простой перекрёсток в перекрёсток с круговым движением. "
+"Выберите точку пересечения дорог или круговой перекрёсток и нажмите Crtl-"
+"Shift-R"
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -26436,10 +26496,10 @@ msgid "View %name% image"
 msgstr "Просмотреть изображение %name%"
 
 msgid "View %name% sheet of river"
-msgstr ""
+msgstr "Просмотреть информационный лист реки %name%"
 
 msgid "View %name% municipality sheet"
-msgstr ""
+msgstr "Просмотреть информацию %name% о муниципалитете"
 
 msgid "View %name% sheet on osm.fr"
 msgstr "Просмотреть страницу %name% на osm.fr"
@@ -26475,7 +26535,7 @@ msgid "View %name% list of regions"
 msgstr ""
 
 msgid "View %name% sheet of church"
-msgstr ""
+msgstr "Просмотреть информацию %name% о церкви"
 
 msgid "View Mérimée sheet of monument"
 msgstr "Просмотреть карточку памятника из базы Мериме"
@@ -26487,7 +26547,7 @@ msgid "View %name% sheet of geodesic site"
 msgstr ""
 
 msgid "View UAI sheet of school/college"
-msgstr ""
+msgstr "Просмотреть информацию UAI о школе/колледже"
 
 msgid "View %name% sheet of hospital/home"
 msgstr ""
@@ -26502,7 +26562,7 @@ msgid "View %name% page of this post office"
 msgstr "Посмотреть страницу %name% этого почтового отделения"
 
 msgid "View %name% sheet of memorial"
-msgstr ""
+msgstr "Просмотреть информацию %name% о памятнике"
 
 msgid "Even housenumber in odd address interpolation."
 msgstr "Чётный номер дома в интерполяции нечётных адресов."
@@ -26812,6 +26872,9 @@ msgstr ""
 "{0} –  тег для линейных водных объектов. Для обозначения площадных водоёмов "
 "используйте {1} + {2}."
 
+msgid "node connects highway and building"
+msgstr "точка соединяет дорогу и здание"
+
 msgid "abbreviated street name"
 msgstr "сокращённое обозначение улицы"
 
@@ -26951,20 +27014,61 @@ msgid "Nodes duplicating parent way tags"
 msgstr "Точки с тегами как у родительской линии"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
-"не указан язык Википедии, используйте ''wikipedia''=''язык:заголовок "
-"страницы''"
 
-msgid "unknown language prefix in wikipedia tag"
-msgstr "неизвестный префикс языка в теге wikipedia"
+msgid "wikipedia tag has an unknown language prefix"
+msgstr ""
 
-msgid "deprecated format for wikipedia tag"
-msgstr "нерекомендуемый формат тега wikipedia"
+msgid "wikipedia tag format is deprecated"
+msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr "''wikipedia''=''язык:заголовок страницы''"
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr "первый символ заголовка страницы wikipedia должен быть заглавным"
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr "Формат тега wikidata должен быть Qnnnn, где n - цифры"
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+"задан тег wikipedia, но нет тега wikidata. Модуль wikipedia может помочь с "
+"поиском идентификатора Викиданных"
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+"тег wikipedia не задан, но имеется тег ''{0}''. Убедитесь в использовании "
+"wikipedia=language:value совместно с тегом wikidata."
+
 msgid "Hide icons at low zoom"
 msgstr "Скрывать значки на малом масштабе"
 
@@ -27595,11 +27699,11 @@ msgstr "Всего изображений:"
 msgid "images"
 msgstr "снимков"
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
-msgstr "Шрифт дорожного знака в ''{0}'' имеет неправильный формат"
+msgid "Mapillary object layer"
+msgstr "Слой объектов Mapillary"
 
-msgid "Could not read font-file from ''{0}''"
-msgstr "Не удалось прочитать файл шрифта из ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
+msgstr ""
 
 msgid "Mapillary"
 msgstr "Mapillary"
@@ -27646,9 +27750,6 @@ msgstr "Режим объединения"
 msgid "Join/unjoin pictures"
 msgstr "Соединить/разъединить снимки"
 
-msgid "Join Mapillary pictures"
-msgstr "Объединить снимки Mapillary"
-
 msgid "Submit changeset"
 msgstr "Передать пакет правок"
 
@@ -27686,9 +27787,6 @@ msgstr "Отправить снимки."
 msgid "Walk mode"
 msgstr "Режим прогулки"
 
-msgid "Start walk mode"
-msgstr "Включить режим прогулки"
-
 msgid "Zoom to selected image"
 msgstr "Масштабировать до выбранного снимка"
 
@@ -27794,18 +27892,18 @@ msgstr "История Mapillary"
 msgid "Open Mapillary history dialog"
 msgstr "Открыть диалог истории Mapillary"
 
+msgid "No image selected"
+msgstr "Изображение не выбрано"
+
+msgid "Press \"{0}\" to download images"
+msgstr "Нажмите \"{0}\" для скачивания изображений"
+
 msgid "Mapillary picture"
 msgstr "Снимок Mapillary"
 
 msgid "Open Mapillary window"
 msgstr "Открыть окно Mapillary"
 
-msgid "Mapillary dialog"
-msgstr "Диалог Mapillary"
-
-msgid "Open Mapillary main dialog"
-msgstr "Открыть главное диалоговое окно Mapillary"
-
 msgid "Next picture"
 msgstr "Следующий снимок"
 
@@ -27859,6 +27957,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr "Предпросмотр изображения при наведении на его значок"
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr "Режим скачивания"
 
@@ -27935,6 +28036,12 @@ msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 "Показывает подробную информацию о текущем выделенном снимке Mapillary"
 
+msgid "View in browser"
+msgstr "Открыть в браузере"
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr "Добавить тег Mapillary"
 
@@ -27956,6 +28063,12 @@ msgstr "у последовательности нет идентификато
 msgid "Could not open the URL {0} in a browser"
 msgstr "Не удалось открыть URL {0} в браузере"
 
+msgid "Mapillary objects"
+msgstr "Объекты Mapillary"
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] "Удалён {0} снимок"
@@ -27986,6 +28099,9 @@ msgstr[2] "Повёрнуто {0} изображений"
 msgid "2 images unjoined"
 msgstr "2 снимка разъединены"
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr "всё в видимой области"
 
@@ -28002,6 +28118,9 @@ msgstr ""
 "Скачанная область OSM слишком велика. Режим загрузки изменён на область со "
 "скачанными данными OSM до следующего перезапуска слоя."
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr "Загрузка"
 
@@ -28044,19 +28163,6 @@ msgstr "Не выполнен вход в Mapillary"
 msgid "Uploading: {0}"
 msgstr "Отправка: {0}"
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr "Неверный идентификатор изображения ''{0}''!"
-
-msgid "The image key must not be null here!"
-msgstr "Идентификатор изображения здесь не должен иметь значение null!"
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr "Неверный идентификатор последовательности ''{0}''!"
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-"Идентификатор последовательности здесь не должен иметь значение null!"
-
 msgid "NanoLog"
 msgstr "NanoLog"
 
@@ -28655,6 +28761,9 @@ msgstr "Здание:"
 msgid "Tags:"
 msgstr "Теги:"
 
+msgid "Source:"
+msgstr "Источник:"
+
 msgid "Name:"
 msgstr "Название:"
 
@@ -28690,6 +28799,12 @@ msgstr "Попытка распознать область в точке:"
 msgid "Created area"
 msgstr "Создана область"
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] "Добавить адрес"
+msgstr[1] "Добавить адреса"
+msgstr[2] "Добавить адреса"
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr "Не удалось обнаружить полигон в месте щелчка."
 
@@ -28792,6 +28907,16 @@ msgstr "Объединять точки"
 msgid "Merge nodes with existing nodes"
 msgstr "Объединять точки с существующими точками"
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+"Пытаться автоматически найти корректный адрес с помощью модуля Austria "
+"Address Helper"
+
 msgid "Debug"
 msgstr "Отладка"
 
@@ -28800,6 +28925,24 @@ msgstr ""
 "В отладочном режиме изображения будут записываться для каждого шага "
 "обработки."
 
+msgid "Fetch Address"
+msgstr "Получить адрес"
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr "Austria Address Helper<br>Пожалуйста, выберите только один объект."
+
+msgid "Austria Address Helper"
+msgstr "Austria Address Helper"
+
+msgid "Successfully added address to selected object:"
+msgstr "Успешно добавлен адрес к выделенному объекту:"
+
+msgid "No address was found for this object."
+msgstr "Адрес для этого объекта не найден."
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr "Генерализация зданий"
 
@@ -28905,9 +29048,6 @@ msgstr "Адресные точки внутри зданий не найден
 msgid "on polygon"
 msgstr "на полигоне"
 
-msgid "Add address"
-msgstr "Добавить адрес"
-
 msgid "Helping tool for tag address"
 msgstr "Вспомогательный инструмент для тега адреса"
 
@@ -29546,15 +29686,6 @@ msgstr "Удалить выбранную тему из списка."
 msgid "Color Schemes"
 msgstr "Цветовые схемы"
 
-msgid "Conflate object pair"
-msgstr "Объединить пару объектов"
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] "Добавлен {0} объект к целевому слою"
-msgstr[1] "Добавлено {0} объекта к целевому слою"
-msgstr[2] "Добавлено {0} объектов к целевому слою"
-
 msgid "Conflation"
 msgstr "Объединение"
 
@@ -29585,15 +29716,12 @@ msgstr "Настройка"
 msgid "Configure conflation options"
 msgstr "Настроить параметры объединения"
 
-msgid "Delete {0} conflation matches"
-msgstr "Удалить {0} пар слияния"
-
-msgid "Remove {0} unmatched objects"
-msgstr "Удалить {0} несовпадающих объектов"
-
 msgid "Remove selected matches"
 msgstr "Удалить выбранные пары"
 
+msgid "Remove ({0})"
+msgstr "Удалить ({0})"
+
 msgid "Conflate"
 msgstr "Объединить"
 
@@ -29603,8 +29731,11 @@ msgstr "Объединить выделенные объекты"
 msgid "Conflation: {0}"
 msgstr "Слияние: {0}"
 
-msgid "Cannot replace geometry."
-msgstr "Невозможно заменить геометрию."
+msgid "Conflate {0} objects"
+msgstr "Объединить {0} объектов"
+
+msgid "Conflate ({0})"
+msgstr "Объединить ({0})"
 
 msgid "Zoom to selected primitive(s)"
 msgstr "Приблизиться к выбранным примитивам"
@@ -29615,23 +29746,131 @@ msgstr "Выделить выбранные примитивы"
 msgid "Select the primitives currently selected in the list"
 msgstr "Выделить примитивы, которые выбраны в списке"
 
-msgid "Match finder settings"
-msgstr "Настройки поиска совпадений"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr "Целевой слой"
+
+msgid "Conflate object pair"
+msgstr "Объединить пару объектов"
+
+msgid "Cannot replace geometry."
+msgstr "Невозможно заменить геометрию."
 
-msgid "Match finder method"
-msgstr "Метод поиска совпадений"
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] "Добавлен {0} объект к целевому слою"
+msgstr[1] "Добавлено {0} объекта к целевому слою"
+msgstr[2] "Добавлено {0} объектов к целевому слою"
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
 
-msgid "Threshold distance"
-msgstr "Пороговая дистанция"
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr "Удалить {0} несовпадающих объектов"
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr "Прерванная последовательность ({0}/{1}): {2}"
 
-msgid "Distances greater than this will result in a score of zero."
-msgstr "Расстояние, превышение которого приведёт к нулевому значению"
+msgid " Max: "
+msgstr " макс.: "
 
-msgid "Centroid distance"
-msgstr "Расстояние между геометрическими центрами"
+msgid "Filter by area. Min: "
+msgstr "Фильтрация по площади. Мин.: "
 
-msgid "Hausdorff distance"
-msgstr "Метрика Хаусдорфа"
+msgid "Filter by window. Buffer: "
+msgstr "Фильтрация по окну. Буфер: "
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Вес"
+
+msgid "Standard Distance"
+msgstr "Обычное расстояние"
+
+msgid "below"
+msgstr "меньше"
+
+msgid "Maximum Distance"
+msgstr "Максимальное расстояние"
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
+msgstr ""
+
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
+msgstr ""
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
+
+msgid "Matching"
+msgstr "Сопоставление"
+
+msgid "Filtering"
+msgstr "Фильтрация"
+
+msgid "Unioning"
+msgstr "Объединение"
+
+msgid "Simple Example"
+msgstr "Простой пример"
+
+msgid "Advanced Example"
+msgstr "Сложный пример"
+
+msgid "<Please select data>"
+msgstr "<Выберите данные>"
 
 msgid "Configure conflation settings"
 msgstr "Настроить параметры объединения"
@@ -29639,14 +29878,32 @@ msgstr "Настроить параметры объединения"
 msgid "Generate matches"
 msgstr "Подобрать пары"
 
-msgid "Layer:"
-msgstr "Слой:"
+msgid "Reference:"
+msgstr "Ссылка:"
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
-msgstr "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
+msgstr ""
 
-msgid "Subject"
-msgstr "Целевой слой"
+msgid "Programming"
+msgstr "Программирование"
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Заменить геометрию"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr "Перезаписывать теги без подтверждения"
+
+msgid "List of tags to overwrite without confirmation"
+msgstr "Список тегов для перезаписи без подтверждения"
 
 msgid "Selections must be made for both reference and subject."
 msgstr "Выделение должно быть сделано и на справочном и на целевом слое"
@@ -29678,11 +29935,26 @@ msgstr "Ничего не выделено"
 msgid "Freeze reference selection"
 msgstr "Заблокировать выделение в справочном слое"
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
-msgstr "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr "Расстояние"
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
+msgstr "Центроид"
+
+msgid "Hausdorff"
+msgstr ""
 
-msgid "Invalid reference or subject"
-msgstr "Неверный объект справочного или целевого слоя"
+msgid "List of tags to match (default: none)"
+msgstr "Список тегов для сравнения (по умолчанию: нет)"
 
 msgid "Download OSM data continuously"
 msgstr "Скачивать данные OSM постоянно"
@@ -30787,6 +31059,33 @@ msgstr "Импорт векторной графики"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "SVG файлы [модуль ImportVec] (*.svg)"
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr "Помощник создания вестибюлей..."
 
@@ -31051,9 +31350,6 @@ msgstr "Заменить линию"
 msgid "Replace way of selected way with a new way"
 msgstr "Заменить выбранную линию новой линией"
 
-msgid "Replace Geometry"
-msgstr "Заменить геометрию"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -32390,9 +32686,6 @@ msgstr "Редактировать GPS-данные снимка"
 msgid "Please select an image first."
 msgstr "Сначала выберите изображение."
 
-msgid "No image selected"
-msgstr "Изображение не выбрано"
-
 msgid "(Empty values delete the according fields.)"
 msgstr "(Пустые значения удаляют соответствующие поля.)"
 
@@ -33411,6 +33704,12 @@ msgstr ""
 "Предупреждение: Неподдерживаемый конечный элемент ''{0}'' в содержимом "
 "пакета правок в позиции ({1},{2}). Пропущено."
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr "RoadSigns Plugin"
 
@@ -33540,9 +33839,6 @@ msgstr "Задать настройки маршрутизации."
 msgid "Speed (Km/h)"
 msgstr "Скорость (км/ч)"
 
-msgid "Weight"
-msgstr "Вес"
-
 msgid "Enter weight values"
 msgstr "Введите значения веса"
 
diff --git a/i18n/po/sk.po b/i18n/po/sk.po
index 508e114..dedfa00 100644
--- a/i18n/po/sk.po
+++ b/i18n/po/sk.po
@@ -9,16 +9,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
-"PO-Revision-Date: 2017-02-22 23:48+0000\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
+"PO-Revision-Date: 2017-03-18 20:27+0000\n"
 "Last-Translator: aceman444 <Unknown>\n"
 "Language-Team: Slovak <>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:14+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:10+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: sk\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1508,8 +1508,8 @@ msgstr "Kresliť spojnice medzi GPS bodmi"
 msgid "Toggles the global setting ''{0}''."
 msgstr "Zapnúť/Vypnúť globálne nastavenie ''{0}''."
 
-msgid "Encourage/discourage upload"
-msgstr "Odporúčané/neodporúčané nahratie"
+msgid "Discourage upload"
+msgstr "Varovať pred odoslaním"
 
 msgid "UnGlue Ways"
 msgstr "Rozpojiť cesty"
@@ -8623,6 +8623,13 @@ msgstr ""
 "<html>Autom. spustenie okna ''Stiahnuť z OSM'' vždy po spustení JOSM-"
 "u.<br>Môžete ho otvoriť ručne z ponuky Súbor alebo panela nástrojov.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr "Priblížiť na stiahnuté dáta"
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+"Zvoľte ak chcete priblížiť tak, aby bolo vidieť všetky nové stiahnuté dáta."
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -10141,6 +10148,9 @@ msgstr "Verzia API: {0}"
 msgid "Upload is discouraged"
 msgstr "Nahratie sa neoporúča"
 
+msgid "Upload is blocked"
+msgstr "Odoslanie je zablokované"
+
 msgid "Convert to GPX layer"
 msgstr "Previesť do GPX vrstvy"
 
@@ -16111,6 +16121,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "obytná (osídlená) zóna"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "krovie"
@@ -16119,6 +16137,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr "les"
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "associatedStreet (pridružená ulica)"
@@ -16565,6 +16587,18 @@ msgstr "VoGIS: Výšky a pozemky"
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr "imagico.de OSM obrázky pre mapovanie: Rila and Pirin Mountains"
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr "OpenStreetMap (Belgický štýl)"
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr "OpenStreetMap (Belgický štýl - Francúzsky)"
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr "OpenStreetMap (Belgický štýl - Holandsky)"
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr "OpenStreetMap (Belgický štýl - Nemecky)"
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr "AGIV Flanders najnovšie letecké snímky"
 
@@ -16577,9 +16611,15 @@ msgstr "AGIV Flanders GRB"
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr numerical imagery (2013)"
 
+msgid "URBISfr numerical imagery"
+msgstr "URBISfr numerické snímky"
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr "URBISnl numerical imagery (2013)"
 
+msgid "URBISnl numerical imagery"
+msgstr "URBISnl numerické snímky"
+
 msgid "URBIS 2009 aerial imagery"
 msgstr "URBIS 2009 letecké snímky"
 
@@ -16592,6 +16632,9 @@ msgstr "URBIS 2014 letecké snímky"
 msgid "URBIS 2015 aerial imagery"
 msgstr "URBIS 2015 letecké snímky"
 
+msgid "URBIS 2016 aerial imagery"
+msgstr "URBIS 2016 letecké snímky"
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr "SPW(allonie) PICC numerical imagery"
 
@@ -16887,28 +16930,28 @@ msgstr ""
 "prílivové oblasti (infračervené)"
 
 msgid "Saxony latest aerial imagery"
-msgstr ""
+msgstr "Dolné Sasko najnovšie letecké snímky"
 
 msgid "Saxony latest aerial imagery infrared"
-msgstr ""
+msgstr "Dolné Sasko letecké snímky infračervené"
 
 msgid "Saxony aerial imagery 2005"
-msgstr ""
+msgstr "Dolné Sasko letecké snímky 2005"
 
 msgid "Saxony WebAtlasSN"
-msgstr ""
+msgstr "Dolné Sasko WebAtlasSN"
 
 msgid "Saxony topographic map"
-msgstr ""
+msgstr "Dolné Sasko topografická mapa"
 
 msgid "Saxony digital terrain model"
-msgstr ""
+msgstr "Dolné Sasko digitálny terénny model"
 
 msgid "Mainz all aerial imageries"
-msgstr ""
+msgstr "Mainz všetky letecké snímky"
 
 msgid "Mainz latest aerial imagery"
-msgstr ""
+msgstr "Mainz najnovšie letecké snímky"
 
 msgid "imagico.de OSM images for mapping: Qasigiannguit"
 msgstr "imagico.de OSM obrázky pre mapovanie: Qasigiannguit"
@@ -17096,10 +17139,10 @@ msgid "ORT10LT (Lithuania)"
 msgstr "ORT10LT (Litva)"
 
 msgid "geoportail.lu all layers"
-msgstr ""
+msgstr "geoportail.lu všetky vrstvy"
 
 msgid "geoportail.lu ortho 2016"
-msgstr ""
+msgstr "geoportail.lu orto 2016"
 
 msgid "Luxembourg Inspire Railway"
 msgstr "Luxembourg Inspire Železnice"
@@ -17391,11 +17434,11 @@ msgstr "Mesto Zürich prehľadová mapa (Ulice, Budovy, Čísla domov)"
 msgid "Stadt Zürich Luftbild 2011"
 msgstr "Letecká snímka mesta Zürich 2011"
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
-msgstr "Letecké snímky kantonu Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
+msgstr "Canton Solothurn najnovšie letecké snímky SOGIS RGB"
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
-msgstr "Letecké snímky kantonu Solothurn Infračervené (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
+msgstr "Canton Solothurn najnovšie letecké snímky SOGIS Infračervené"
 
 msgid "Canton de Génève 5cm (SITG 2011)"
 msgstr "Canton de Génève 5cm (SITG 2011)"
@@ -17514,8 +17557,8 @@ msgstr "Texas Ortofoto"
 msgid "Philadelphia 2015 Imagery"
 msgstr "Philadelphia 2015 letecké snímky"
 
-msgid "MD 2014 6 Inch Aerial Imagery"
-msgstr "MD 2014 6-palcové letecké snímky"
+msgid "MD Latest 6 Inch Aerial Imagery"
+msgstr "MD Najnovšie 6-palcové letecké snímky"
 
 msgid "MD Three Inch Aerial Imagery"
 msgstr "MD 3-palcové letecké snímky"
@@ -17852,6 +17895,13 @@ msgstr ""
 "basemap.at."
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+"Automaticky pridelí adresy na vybrané objekty v Rakúsku. Data (c) "
+"Österreichisches Adressregister."
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -17896,8 +17946,8 @@ msgstr ""
 "Doplní príkazový riadok a aktivuje vkladanie príkazov. Pozri odkaz na "
 "štandardné príkazy (oblúku, kružnica atď.)"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
-msgstr "(Varovanie: Experimentálne!) Nástroj pre spájanie (zlučovanie) dát."
+msgid "Tool for conflating data (matching and merging)."
+msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
 msgstr "Sťahuje nové údaje pri posúvaní/približovaní"
@@ -18035,6 +18085,11 @@ msgstr "Plugin pre import priestorovo odkazovaných obrázkov"
 msgid "Import vector graphics (SVG)"
 msgstr "Import vektorovej grafiky (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr "Tento plugin zjednodušuje mapovanie a úpravy chodieb v budovách."
 
@@ -18245,6 +18300,11 @@ msgid "Plugin for reverting changesets"
 msgstr "Plugin pre obnovu súborov zmien"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -22150,7 +22210,7 @@ msgid "University"
 msgstr "Univerzita (Vysoká škola)"
 
 msgid "College"
-msgstr "Stredná škola"
+msgstr "Vyššia odborná škola"
 
 msgid "Driving School"
 msgstr "Autoškola"
@@ -23085,7 +23145,7 @@ msgstr "univerzita"
 
 msgctxt "building"
 msgid "college"
-msgstr "vyššie vzdelávanie"
+msgstr "vyššia odborná škola"
 
 msgctxt "building"
 msgid "hospital"
@@ -26699,6 +26759,9 @@ msgstr ""
 "{0} je značka pre lineárnu vodnú cestu. Pre označkovanie vodnej oblasti "
 "použite namiesto toho {1} + {2}."
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr "skrátený názov ulice"
 
@@ -26842,19 +26905,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr "Body duplikujúce značky cesty, ktorej sú súčasťou"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
-"nezadaný jazyk pre wikipediu, použite \"wikipedia=jazyk:názov stránky\""
 
-msgid "unknown language prefix in wikipedia tag"
-msgstr "neznáma predpona jazyka v značke \"wikipedia\""
+msgid "wikipedia tag has an unknown language prefix"
+msgstr ""
 
-msgid "deprecated format for wikipedia tag"
-msgstr "zastaralý formát značky wikipedia"
+msgid "wikipedia tag format is deprecated"
+msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr "\"wikipedia\"=\"jazyk:názov stránky\""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr "Skryť ikony pri malom priblížení"
 
@@ -27473,10 +27574,10 @@ msgstr "Počet obrázkov:"
 msgid "images"
 msgstr "obrázky"
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -27524,9 +27625,6 @@ msgstr "Režim spájania"
 msgid "Join/unjoin pictures"
 msgstr "Spojiť/oddeliť obrázky"
 
-msgid "Join Mapillary pictures"
-msgstr "Spojiť obrázky Mapillary"
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -27558,9 +27656,6 @@ msgstr "Odoslať obrázky."
 msgid "Walk mode"
 msgstr "Režim chôdze"
 
-msgid "Start walk mode"
-msgstr "Spustiť režim chôdze"
-
 msgid "Zoom to selected image"
 msgstr "Priblížiť na zvolený obrázok"
 
@@ -27666,18 +27761,18 @@ msgstr "História Mapillary"
 msgid "Open Mapillary history dialog"
 msgstr "Otvoriť okno histórie Mapillary"
 
+msgid "No image selected"
+msgstr ""
+
+msgid "Press \"{0}\" to download images"
+msgstr ""
+
 msgid "Mapillary picture"
 msgstr "Obrázok Mapillary"
 
 msgid "Open Mapillary window"
 msgstr "Otvoriť okno Mapillary"
 
-msgid "Mapillary dialog"
-msgstr "Okno Mapillary"
-
-msgid "Open Mapillary main dialog"
-msgstr "Otvoriť hlavné okno Mapillary"
-
 msgid "Next picture"
 msgstr "Nasledujúci obrázok"
 
@@ -27729,6 +27824,9 @@ msgstr "Tlačidlom nasledujúci/predchádzajúci sa presunúť na pozíciu obrá
 msgid "Preview images when hovering its icon"
 msgstr "Zobraziť náhľady obrázkov pri prejdení nad ich ikonou"
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -27797,6 +27895,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -27818,6 +27922,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] "{0} obrázkov vymazaných"
@@ -27848,6 +27958,9 @@ msgstr[2] "{0} obrázky otočené"
 msgid "2 images unjoined"
 msgstr "2 obrázky rozpojené"
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr "všetko vo viditeľnej oblasti"
 
@@ -27862,6 +27975,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr "Sťahuje sa"
 
@@ -27904,18 +28020,6 @@ msgstr "Neprihlásený do Mapillary"
 msgid "Uploading: {0}"
 msgstr "Odosiela sa: {0}"
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr "NanoLog"
 
@@ -28419,6 +28523,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "Názov:"
 
@@ -28452,6 +28559,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -28541,12 +28653,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -28647,9 +28785,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -29279,14 +29414,6 @@ msgstr "Zmazať vybranú schému zo zoznamu."
 msgid "Color Schemes"
 msgstr "Farebná schéma"
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -29317,13 +29444,10 @@ msgstr "Konfigurovať"
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -29335,7 +29459,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -29347,22 +29474,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Hmotnosť"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
+msgstr ""
+
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Match finder method"
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Threshold distance"
+msgid "Matching"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid "Filtering"
 msgstr ""
 
-msgid "Centroid distance"
+msgid "Unioning"
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -29371,13 +29605,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Nahradiť geometriu"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -29410,10 +29662,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
+msgstr ""
+
+msgid "Hausdorff"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -30467,6 +30734,33 @@ msgstr "Importovať vektorovú grafiku"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "SVG súbory [ImportVec plugin] (*.svg)"
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -30718,9 +31012,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr "Nahradiť geometriu"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -31980,9 +32271,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -32979,6 +33267,12 @@ msgstr ""
 "Upozornenie: Nepodporovaný koncový prvok ''{0}'' v obsahu zmenového súboru "
 "na pozícii ({1},{2}). Vynechávam."
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr "Plugin Dopravné značky (Road Sign Plugin)"
 
@@ -33108,9 +33402,6 @@ msgstr "Konfigurácia trasových priorít."
 msgid "Speed (Km/h)"
 msgstr "Rýchlosť (km/h)"
 
-msgid "Weight"
-msgstr "Hmotnosť"
-
 msgid "Enter weight values"
 msgstr "Vstup hmotnostnej hodnoty"
 
diff --git a/i18n/po/sl.po b/i18n/po/sl.po
index 07df757..649aa8f 100644
--- a/i18n/po/sl.po
+++ b/i18n/po/sl.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2015-11-07 17:38+0000\n"
 "Last-Translator: Joško Horvat <Unknown>\n"
 "Language-Team: Slovenian <sl at li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
 "n%100==4 ? 3 : 0);\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:15+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:10+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: sl\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1400,7 +1400,7 @@ msgstr "Riši črte med točkami GPS sledi."
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7953,6 +7953,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9278,6 +9284,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Pretvori v plast GPX"
 
@@ -14511,6 +14520,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14519,6 +14536,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14964,6 +14985,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14976,9 +15009,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14991,6 +15030,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15782,10 +15824,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15905,7 +15947,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16232,6 +16274,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16264,7 +16311,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16384,6 +16431,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16552,6 +16604,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24894,6 +24951,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -25024,18 +25084,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25634,10 +25733,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25685,9 +25784,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25719,9 +25815,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25827,16 +25920,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25890,6 +25983,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25958,6 +26054,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25979,6 +26081,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -26005,6 +26113,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -26019,6 +26130,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26061,18 +26175,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26569,6 +26671,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26602,6 +26707,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26689,12 +26799,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26795,9 +26931,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27374,14 +27507,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27412,13 +27537,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27430,7 +27552,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27442,22 +27567,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27466,13 +27698,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27505,10 +27755,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28536,6 +28801,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28787,9 +29079,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -30033,9 +30322,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -31016,6 +31302,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31145,9 +31437,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/sq.po b/i18n/po/sq.po
index b2b641e..f639d09 100644
--- a/i18n/po/sq.po
+++ b/i18n/po/sq.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2011-11-04 19:43+0000\n"
 "Last-Translator: StefanPrifti <Unknown>\n"
 "Language-Team: FLOSS Kosova\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 04:34+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 04:34+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1388,7 +1388,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7918,6 +7918,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9232,6 +9238,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14447,6 +14456,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14455,6 +14472,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14900,6 +14921,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14912,9 +14945,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14927,6 +14966,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15718,10 +15760,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15841,7 +15883,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16168,6 +16210,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16200,7 +16247,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16320,6 +16367,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16488,6 +16540,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24830,6 +24887,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24960,18 +25020,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25570,10 +25669,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25621,9 +25720,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25655,9 +25751,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25763,16 +25856,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25826,6 +25919,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25894,6 +25990,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25915,6 +26017,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25941,6 +26049,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25955,6 +26066,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25997,18 +26111,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26505,6 +26607,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26538,6 +26643,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26625,12 +26735,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26731,9 +26867,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27310,14 +27443,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27348,13 +27473,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27366,7 +27488,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27378,22 +27503,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27402,13 +27634,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27441,10 +27691,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28472,6 +28737,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28723,9 +29015,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29967,9 +30256,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30950,6 +31236,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31079,9 +31371,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/sr.po b/i18n/po/sr.po
index 9416151..c2cf532 100644
--- a/i18n/po/sr.po
+++ b/i18n/po/sr.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2015-02-01 15:30+0000\n"
 "Last-Translator: Slobodan Simić <Unknown>\n"
 "Language-Team: Serbian <sr at li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:12+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:08+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: sr\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1389,7 +1389,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7919,6 +7919,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9234,6 +9240,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14449,6 +14458,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14457,6 +14474,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14902,6 +14923,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14914,9 +14947,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14929,6 +14968,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15720,10 +15762,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15843,7 +15885,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16170,6 +16212,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16202,7 +16249,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16322,6 +16369,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16490,6 +16542,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24832,6 +24889,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24962,18 +25022,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25572,10 +25671,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25623,9 +25722,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25657,9 +25753,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25765,16 +25858,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25828,6 +25921,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25896,6 +25992,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25917,6 +26019,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25943,6 +26051,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25957,6 +26068,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25999,18 +26113,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26507,6 +26609,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26540,6 +26645,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26627,12 +26737,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26733,9 +26869,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27312,14 +27445,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27350,13 +27475,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27368,7 +27490,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27380,22 +27505,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27404,13 +27636,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27443,10 +27693,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28474,6 +28739,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28725,9 +29017,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29969,9 +30258,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30952,6 +31238,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31081,9 +31373,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/sv.po b/i18n/po/sv.po
index 0f970d0..d006311 100644
--- a/i18n/po/sv.po
+++ b/i18n/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2017-02-22 12:40+0000\n"
 "Last-Translator: Erik <Unknown>\n"
 "Language-Team: Swedish <sv at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:16+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:11+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: sv\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1485,8 +1485,8 @@ msgstr "Rita linjer mellan råa gps-punkter."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Byter läge för den globala inställningen ''{0}''."
 
-msgid "Encourage/discourage upload"
-msgstr "Tillstyrk/avråd uppladdning"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "Frigör sträckor"
@@ -8289,6 +8289,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9655,6 +9661,9 @@ msgstr "API version: {0}"
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Omvandla till gpx-lager"
 
@@ -15069,6 +15078,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "bostadsområde"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "buskage"
@@ -15077,6 +15094,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr "naturskog"
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -15522,6 +15543,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -15534,9 +15567,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -15549,6 +15588,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -16340,10 +16382,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -16463,7 +16505,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16792,6 +16834,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16824,7 +16871,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16944,6 +16991,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr "Importera vektorgrafik (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -17117,6 +17169,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -25489,6 +25546,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr "förkortat gatunamn"
 
@@ -25621,18 +25681,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -26231,10 +26330,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -26282,9 +26381,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -26316,9 +26412,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr "Zooma till vald bild"
 
@@ -26424,16 +26517,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -26487,6 +26580,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -26555,6 +26651,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -26576,6 +26678,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -26602,6 +26710,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -26616,6 +26727,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26658,18 +26772,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -27166,6 +27268,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "Namn:"
 
@@ -27199,6 +27304,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -27286,12 +27396,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -27393,9 +27529,6 @@ msgstr "Inga adressnoder hittades inuti några byggnader"
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27980,14 +28113,6 @@ msgstr "Ta bort valt schema från listan."
 msgid "Color Schemes"
 msgstr "Färgscheman"
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -28018,13 +28143,10 @@ msgstr "Anpassa"
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -28036,7 +28158,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -28048,22 +28173,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Vikt"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
 msgstr ""
 
-msgid "Match finder method"
+msgid "Symmetric Difference (Centroids Aligned)"
 msgstr ""
 
-msgid "Threshold distance"
+msgid "Compactness"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid "Angle Histogram. Bins: "
 msgstr ""
 
-msgid "Centroid distance"
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
+msgstr ""
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
+
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -28072,13 +28304,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Ersätt Geometri"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -28111,10 +28361,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -29151,6 +29416,33 @@ msgstr "Importera vektorgrafik"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -29402,9 +29694,6 @@ msgstr "Ersätt väg"
 msgid "Replace way of selected way with a new way"
 msgstr "Ersätt väg med vald väg med en ny väg"
 
-msgid "Replace Geometry"
-msgstr "Ersätt Geometri"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -30668,9 +30957,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -31651,6 +31937,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31780,9 +32072,6 @@ msgstr "Konfigurera ruttberäkning"
 msgid "Speed (Km/h)"
 msgstr "Hastighet (Km/h)"
 
-msgid "Weight"
-msgstr "Vikt"
-
 msgid "Enter weight values"
 msgstr "Ange viktvärden"
 
diff --git a/i18n/po/ta.po b/i18n/po/ta.po
index c84bc69..d847dd6 100644
--- a/i18n/po/ta.po
+++ b/i18n/po/ta.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2015-10-28 15:55+0000\n"
 "Last-Translator: நவலடி <navaladi at gmail.com>\n"
 "Language-Team: Tamil <ta at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:17+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:12+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "X-Poedit-Country: INDIA\n"
 "Language: ta\n"
 "X-Poedit-Language: Tamil\n"
@@ -1422,7 +1422,7 @@ msgstr "தொட்த GPS புள்ளிகளிடைய கோடுக
 msgid "Toggles the global setting ''{0}''."
 msgstr "\"{0}\" என்ற பொதுவான சூழலை பரிமாறுகிறது"
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7955,6 +7955,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9269,6 +9275,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14486,6 +14495,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14494,6 +14511,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14939,6 +14960,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14951,9 +14984,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14966,6 +15005,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15757,10 +15799,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15880,7 +15922,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16207,6 +16249,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16239,7 +16286,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16359,6 +16406,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16527,6 +16579,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24869,6 +24926,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24999,18 +25059,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25609,10 +25708,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25660,9 +25759,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25694,9 +25790,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25802,16 +25895,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25865,6 +25958,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25933,6 +26029,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25954,6 +26056,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25980,6 +26088,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25994,6 +26105,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26036,18 +26150,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26544,6 +26646,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26577,6 +26682,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26664,12 +26774,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26770,9 +26906,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27349,14 +27482,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27387,13 +27512,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27405,7 +27527,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27417,22 +27542,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27441,13 +27673,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27480,10 +27730,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28511,6 +28776,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28762,9 +29054,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -30012,9 +30301,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30995,6 +31281,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31124,9 +31416,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/te.po b/i18n/po/te.po
index fe25575..51dfb25 100644
--- a/i18n/po/te.po
+++ b/i18n/po/te.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2011-05-13 08:50+0000\n"
 "Last-Translator: Praveen Illa <mail2ipn at gmail.com>\n"
 "Language-Team: Telugu <te at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:17+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:12+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: te\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1388,7 +1388,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7918,6 +7918,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9232,6 +9238,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14447,6 +14456,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14455,6 +14472,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14900,6 +14921,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14912,9 +14945,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14927,6 +14966,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15718,10 +15760,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15841,7 +15883,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16168,6 +16210,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16200,7 +16247,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16320,6 +16367,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16488,6 +16540,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24830,6 +24887,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24960,18 +25020,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25570,10 +25669,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25621,9 +25720,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25655,9 +25751,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25763,16 +25856,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25826,6 +25919,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25894,6 +25990,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25915,6 +26017,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25941,6 +26049,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25955,6 +26066,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25997,18 +26111,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26505,6 +26607,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26538,6 +26643,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26625,12 +26735,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26731,9 +26867,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27310,14 +27443,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27348,13 +27473,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27366,7 +27488,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27378,22 +27503,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27402,13 +27634,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27441,10 +27691,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28472,6 +28737,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28723,9 +29015,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29967,9 +30256,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30950,6 +31236,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31079,9 +31371,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/th.po b/i18n/po/th.po
index ae47884..9a55a17 100644
--- a/i18n/po/th.po
+++ b/i18n/po/th.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2009-03-23 02:34+0000\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: Thai <th at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:18+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:13+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: th\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1388,7 +1388,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7918,6 +7918,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9232,6 +9238,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14447,6 +14456,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14455,6 +14472,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14900,6 +14921,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14912,9 +14945,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14927,6 +14966,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15718,10 +15760,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15841,7 +15883,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16168,6 +16210,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16200,7 +16247,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16320,6 +16367,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16488,6 +16540,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24830,6 +24887,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24960,18 +25020,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25570,10 +25669,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25621,9 +25720,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25655,9 +25751,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25763,16 +25856,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25826,6 +25919,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25894,6 +25990,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25915,6 +26017,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25941,6 +26049,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25955,6 +26066,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25997,18 +26111,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26505,6 +26607,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26538,6 +26643,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26625,12 +26735,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26731,9 +26867,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27310,14 +27443,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27348,13 +27473,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27366,7 +27488,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27378,22 +27503,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27402,13 +27634,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27441,10 +27691,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28472,6 +28737,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28723,9 +29015,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29967,9 +30256,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30950,6 +31236,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31079,9 +31371,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/tr.po b/i18n/po/tr.po
index 4a3a9cd..c409fa9 100644
--- a/i18n/po/tr.po
+++ b/i18n/po/tr.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2017-02-06 01:25+0000\n"
 "Last-Translator: Ferhad Fidan <ferhad at f-blog.info>\n"
 "Language-Team: Türkçe <>\n"
@@ -17,8 +17,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:18+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:14+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1426,7 +1426,7 @@ msgstr "GPS noktaları boyunca çiz."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Genel ayarları sabitle ''{0}''."
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7984,6 +7984,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9298,6 +9304,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "GPX tabakasına çevir"
 
@@ -14552,6 +14561,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14560,6 +14577,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -15005,6 +15026,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -15017,9 +15050,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -15032,6 +15071,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15823,10 +15865,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15946,7 +15988,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16273,6 +16315,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16305,7 +16352,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16425,6 +16472,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16593,6 +16645,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24935,6 +24992,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -25065,18 +25125,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25675,10 +25774,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25726,9 +25825,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25760,9 +25856,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25868,16 +25961,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25931,6 +26024,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25999,6 +26095,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -26020,6 +26122,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -26046,6 +26154,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -26060,6 +26171,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26102,18 +26216,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26610,6 +26712,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26643,6 +26748,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26730,12 +26840,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26836,9 +26972,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27415,14 +27548,6 @@ msgstr "Seçili şemayı sil."
 msgid "Color Schemes"
 msgstr "Renk Şeması"
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27453,13 +27578,10 @@ msgstr "konfigüre"
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27471,7 +27593,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27483,22 +27608,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Ağırlık"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27507,13 +27739,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Geometriyi değiştir"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27546,10 +27796,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28579,6 +28844,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28830,9 +29122,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr "Geometriyi değiştir"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -30086,9 +30375,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -31069,6 +31355,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31198,9 +31490,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr "Hız (Km/h)"
 
-msgid "Weight"
-msgstr "Ağırlık"
-
 msgid "Enter weight values"
 msgstr "Ağırlık değerini gir"
 
diff --git a/i18n/po/ug.po b/i18n/po/ug.po
index c300c68..0f3af43 100644
--- a/i18n/po/ug.po
+++ b/i18n/po/ug.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2012-07-14 16:22+0000\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: Uyghur <ug at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:19+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:14+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1388,7 +1388,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7918,6 +7918,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9232,6 +9238,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14447,6 +14456,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14455,6 +14472,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14900,6 +14921,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14912,9 +14945,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14927,6 +14966,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15718,10 +15760,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15841,7 +15883,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16168,6 +16210,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16200,7 +16247,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16320,6 +16367,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16488,6 +16540,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24830,6 +24887,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24960,18 +25020,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25570,10 +25669,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25621,9 +25720,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25655,9 +25751,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25763,16 +25856,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25826,6 +25919,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25894,6 +25990,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25915,6 +26017,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25941,6 +26049,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25955,6 +26066,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25997,18 +26111,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26505,6 +26607,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26538,6 +26643,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26625,12 +26735,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26731,9 +26867,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27310,14 +27443,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27348,13 +27473,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27366,7 +27488,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27378,22 +27503,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27402,13 +27634,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27441,10 +27691,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28472,6 +28737,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28723,9 +29015,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29967,9 +30256,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30950,6 +31236,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31079,9 +31371,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/uk.po b/i18n/po/uk.po
index b70b2ec..c2bd6d6 100644
--- a/i18n/po/uk.po
+++ b/i18n/po/uk.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
-"PO-Revision-Date: 2017-02-13 10:36+0000\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
+"PO-Revision-Date: 2017-03-12 21:11+0000\n"
 "Last-Translator: andygol <Unknown>\n"
 "Language-Team: Ukrainian <uk at li.org>\n"
 "MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:20+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:15+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: uk\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1527,8 +1527,8 @@ msgstr "Показувати лінії між точками треків GPS."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Включити/виключити загальні параметри: \"{0}\"."
 
-msgid "Encourage/discourage upload"
-msgstr "Рекомендувати/Не рекомендувати надсилання"
+msgid "Discourage upload"
+msgstr "Небажане надсилання даних"
 
 msgid "UnGlue Ways"
 msgstr "Роз’єднати лінії"
@@ -3606,16 +3606,16 @@ msgid "E"
 msgstr "Сх"
 
 msgid "Date of imagery: {0}"
-msgstr ""
+msgstr "Дата знімка: {0}"
 
 msgid "This imagery is marked as best in this region in other editors."
-msgstr ""
+msgstr "Цей знімок позначено, як кращій у цій місцевості в інших редакторах."
 
 msgid "{0} mirror server {1}"
-msgstr ""
+msgstr "{0} дзеркало {1}"
 
 msgid "{0} mirror server"
-msgstr ""
+msgstr "{0} дзеркало"
 
 msgid "Update default entries"
 msgstr "Оновити типові шари"
@@ -8663,6 +8663,12 @@ msgstr ""
 "JOSM.<br>Ви можете відкрити його вручну через меню Файл або з панелі "
 "інструментів.</html>"
 
+msgid "Zoom to downloaded data"
+msgstr "Масштабувати до завантажених даних"
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr "Позначте, щоб масштабуватись до всієї ново завантаженої ділянки"
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -10195,6 +10201,9 @@ msgstr "Версія API: {0}"
 msgid "Upload is discouraged"
 msgstr "Надсилання не рекомендується"
 
+msgid "Upload is blocked"
+msgstr "Надсилання заблоковане"
+
 msgid "Convert to GPX layer"
 msgstr "Перетворити в шар GPX"
 
@@ -11988,15 +11997,15 @@ msgstr "Пішки"
 
 msgctxt "Heat map"
 msgid "User Normal"
-msgstr ""
+msgstr "Користувач (звичайна)"
 
 msgctxt "Heat map"
 msgid "User Light"
-msgstr ""
+msgstr "Користувач (світла)"
 
 msgctxt "Heat map"
 msgid "Traffic Lights"
-msgstr ""
+msgstr "Світлофор"
 
 msgctxt "Heat map"
 msgid "Inferno"
@@ -12015,7 +12024,7 @@ msgid "Heat"
 msgstr "Спека"
 
 msgid "Use points instead of lines for heat map"
-msgstr ""
+msgstr "Використовувати точки замість ліній на тепловій мапі"
 
 msgid "Create markers when reading GPX"
 msgstr "Створювати мітки під час читання GPX"
@@ -12149,20 +12158,22 @@ msgid "Track and Point Coloring"
 msgstr "Забарвлення треку та точок"
 
 msgid "Overlay gain adjustment"
-msgstr ""
+msgstr "Налаштування перекриття шарів"
 
 msgid "Lower limit of visibility"
-msgstr ""
+msgstr "Нижній поріг видимості"
 
 msgid "Adjust the gain of overlay blending."
-msgstr ""
+msgstr "Налаштуйте перекриття шарів"
 
 msgid "Draw all GPX traces that exceed this threshold."
-msgstr ""
+msgstr "Показувати всі треки GPX, що перевищують межу"
 
 msgid ""
 "Render engine uses points with simulated position error instead of lines. "
 msgstr ""
+"Рендер використовує точки з обчисленою  похибкою визначення місцеположення "
+"замість ліній. "
 
 msgid "Colors points and track segments by data limits."
 msgstr "Розфарбовувати точки та відрізки треку за обмеженнями на дані."
@@ -16151,6 +16162,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "житловий район"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "чагарник"
@@ -16159,6 +16178,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr "дерева"
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "Зв’язок (вулиця)"
@@ -16605,6 +16628,18 @@ msgstr "VoGIS: висоти і рельєф місцевості"
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr "imagico.de - знімки OSM для мапінгу: гори Ріла і Пірін"
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr "OpenStreetMap (Бельгійський стиль)"
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr "OpenStreetMap (Бельгійський стиль - французька)"
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr "OpenStreetMap (Бельгійський стиль - голландська)"
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr "OpenStreetMap (Бельгійський стиль - німецька)"
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr "AGIV Фландрія – найостанніші аерофотознімки"
 
@@ -16617,9 +16652,15 @@ msgstr "AGIV Фландрія GRB"
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr - цифрове зображення (2013)"
 
+msgid "URBISfr numerical imagery"
+msgstr "URBISfr цифрові знімки"
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr "URBISnl - цифрове зображення (2013)"
 
+msgid "URBISnl numerical imagery"
+msgstr "URBISnl цифрові знімки"
+
 msgid "URBIS 2009 aerial imagery"
 msgstr "URBIS 2009 - аерофото"
 
@@ -16632,11 +16673,14 @@ msgstr "URBIS 2014 - аерофото"
 msgid "URBIS 2015 aerial imagery"
 msgstr "URBIS 2015 - аерофото"
 
+msgid "URBIS 2016 aerial imagery"
+msgstr "URBIS 2016 - аерофото"
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr "SPW(allonie) цифрове зображення PICC"
 
 msgid "SPW(allonie) most recent aerial imagery"
-msgstr ""
+msgstr "SPW(allonie) найсвіжіші знімки"
 
 msgid "SPW(allonie) 2015 aerial imagery"
 msgstr "SPW(allonie) 2015 аерофото"
@@ -16925,28 +16969,28 @@ msgstr ""
 "(інфрачервоні знімки)"
 
 msgid "Saxony latest aerial imagery"
-msgstr ""
+msgstr "Саксонія - свіжі знімки"
 
 msgid "Saxony latest aerial imagery infrared"
-msgstr ""
+msgstr "Саксонія - свіжі ІЧ знімки"
 
 msgid "Saxony aerial imagery 2005"
-msgstr ""
+msgstr "Саксонія - аерофото 2005"
 
 msgid "Saxony WebAtlasSN"
-msgstr ""
+msgstr "Саксонія WebAtlasSN"
 
 msgid "Saxony topographic map"
-msgstr ""
+msgstr "Саксонія - топографічна мапа"
 
 msgid "Saxony digital terrain model"
-msgstr ""
+msgstr "Саксонія - цифрова модель рельєфу"
 
 msgid "Mainz all aerial imageries"
-msgstr ""
+msgstr "Майнц - все аерофото"
 
 msgid "Mainz latest aerial imagery"
-msgstr ""
+msgstr "Майнц - остані знімки"
 
 msgid "imagico.de OSM images for mapping: Qasigiannguit"
 msgstr "imagico.de - знімки OSM для мапінгу: Касігіаннгуіт"
@@ -17139,10 +17183,10 @@ msgid "ORT10LT (Lithuania)"
 msgstr "ORT10LT (Литва)"
 
 msgid "geoportail.lu all layers"
-msgstr ""
+msgstr "geoportail.lu всі шари"
 
 msgid "geoportail.lu ortho 2016"
-msgstr ""
+msgstr "geoportail.lu орто 2016"
 
 msgid "Luxembourg Inspire Railway"
 msgstr "Люксембург Inspire Залізниця"
@@ -17157,10 +17201,10 @@ msgid "Niger Delta Oct 2012 Landsat"
 msgstr "Дельта Нігера, жовт. 2012 Landsat"
 
 msgid "PDOK Luchtfoto Beeldmateriaal 25cm (WMS)"
-msgstr ""
+msgstr "Аерофото PDOK 25 см (WMS)"
 
 msgid "PDOK Luchtfoto Beeldmateriaal 25cm (WMTS)"
-msgstr ""
+msgstr "Аерофото PDOK 25 см (WMTS)"
 
 msgid "Svalbard -Orthophoto 2009/2011 EPSG:25833"
 msgstr "Шпіцберген - ортофото 2009/2011 EPSG:25833"
@@ -17436,12 +17480,11 @@ msgstr "Цюрих: оглядовий план міста (вулиці, буд
 msgid "Stadt Zürich Luftbild 2011"
 msgstr "Місто Цюрих Вид з повітря 2011"
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
-msgstr "Аерофотозйомка кантону Золотурн RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
+msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
-"Аерофотозйомка кантону Золотурн в ІЧ-діапазоні (SOGIS 2013/2014/2015)"
 
 msgid "Canton de Génève 5cm (SITG 2011)"
 msgstr "Кантон Женева 5 см (SITG 2011)"
@@ -17561,8 +17604,8 @@ msgstr "Техас ортофото"
 msgid "Philadelphia 2015 Imagery"
 msgstr "Филадельфия – знімки 2015"
 
-msgid "MD 2014 6 Inch Aerial Imagery"
-msgstr "Меріленд: знімки 6 дюймів, 2014"
+msgid "MD Latest 6 Inch Aerial Imagery"
+msgstr "MD Свіжі 6 дюймі аерофото"
 
 msgid "MD Three Inch Aerial Imagery"
 msgstr "Меріленд: знімки 3 дюйми"
@@ -17901,6 +17944,11 @@ msgstr ""
 "для полегшення мапінгу будівель з фонового шару. Оптимізовано для basemap.at."
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -17948,9 +17996,8 @@ msgstr ""
 "Перейдіть за посилання, щоб ознайомитись із стандартними командами (arc, "
 "circle тощо)"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
-"(Увага: Експериментальна версія!) Інструмент для об’єднання (злиття) даних."
 
 msgid "Downloads new data when you pan/zoom"
 msgstr "Завантажує дані під час масштабування/пересування мапою"
@@ -18095,6 +18142,11 @@ msgstr "Втулок для імпорту просторово прив’яз
 msgid "Import vector graphics (SVG)"
 msgstr "Імпорт векторної графіки (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 "Цей втулок спрощує додавання та редагування коридорів в середині будівель."
@@ -18312,6 +18364,11 @@ msgid "Plugin for reverting changesets"
 msgstr "Втулок для скасування наборів змін"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -22513,7 +22570,7 @@ msgid "Telephone cards"
 msgstr "Телефонні картки"
 
 msgid "Internet Cafe"
-msgstr ""
+msgstr "Інтернет-кафе"
 
 msgid "Internet Access"
 msgstr "Доступ в Інтернет"
@@ -22561,7 +22618,7 @@ msgid "Shows humidity"
 msgstr "Показує вологість"
 
 msgid "Photo booth"
-msgstr ""
+msgstr "Фотокабінка"
 
 msgid "Recycling Container"
 msgstr "Контейнер вторсировини"
@@ -24860,7 +24917,7 @@ msgid "cigarettes"
 msgstr "сигарети"
 
 msgid "coffee"
-msgstr ""
+msgstr "кава"
 
 msgid "condoms"
 msgstr "презервативи"
@@ -26383,97 +26440,97 @@ msgid "Test"
 msgstr "Перевірка"
 
 msgid "View website"
-msgstr ""
+msgstr "Дивитись веб-сайт"
 
 msgid "View URL"
-msgstr ""
+msgstr "Відкрити URL"
 
 msgid "Send Email"
-msgstr ""
+msgstr "Надіслати листа"
 
 msgid "View image"
-msgstr ""
+msgstr "Переглянути зображення"
 
 msgid "View %name% article"
-msgstr ""
+msgstr "Подивитись статтю %name%"
 
 msgid "View Wikidata page"
-msgstr ""
+msgstr "Подивитись сторінку Вікіданих"
 
 msgid "View UNESCO sheet"
-msgstr ""
+msgstr "Подивитись інформацію ЮНЕСКО"
 
 msgid "View %name% image"
-msgstr ""
+msgstr "Подивитись зображення %name%"
 
 msgid "View %name% sheet of river"
-msgstr ""
+msgstr "Подивитись інформацію про ріку - %name%"
 
 msgid "View %name% municipality sheet"
-msgstr ""
+msgstr "Подивитись інформацію про муніципалітет %name%"
 
 msgid "View %name% sheet on osm.fr"
-msgstr ""
+msgstr "Подивитись сторінку %name% на osm.fr"
 
 msgid "View %name% map of municipalities"
-msgstr ""
+msgstr "Подивитись мапу муніципалітетів %name%"
 
 msgid "View %name% list of municipalities"
-msgstr ""
+msgstr "Подивитись перелік муніципалітетів %name%"
 
 msgid "View %name% map of cantons"
-msgstr ""
+msgstr "Подивитись мапу кантонів %name%"
 
 msgid "View %name% list of cantons"
-msgstr ""
+msgstr "Подивитись перелік кантонів %name%"
 
 msgid "View %name% map of arrondissements"
-msgstr ""
+msgstr "Подивитись мапу округів %name%"
 
 msgid "View %name% list of arrondissements"
-msgstr ""
+msgstr "Подивитись перелік округів %name%"
 
 msgid "View %name% map of departments"
-msgstr ""
+msgstr "Подивитись мапу департаментів %name%"
 
 msgid "View %name% list of departments"
-msgstr ""
+msgstr "Подивитись перелік департаментів %name%"
 
 msgid "View %name% map of regions"
-msgstr ""
+msgstr "Подивитись мапу регіонів %name%"
 
 msgid "View %name% list of regions"
-msgstr ""
+msgstr "Подивитись перелік регіонів %name%"
 
 msgid "View %name% sheet of church"
-msgstr ""
+msgstr "Подивитись сторінку цекрви - %name%"
 
 msgid "View Mérimée sheet of monument"
-msgstr ""
+msgstr "Подивитись сторінку памʼятника в Меріме"
 
 msgid "View Mérimée list for this municipality"
-msgstr ""
+msgstr "Подивитись перелік з Меріме для цього муніципалітету"
 
 msgid "View %name% sheet of geodesic site"
-msgstr ""
+msgstr "Подивитись сторінку %name% геодезичного пункту"
 
 msgid "View UAI sheet of school/college"
-msgstr ""
+msgstr "Дивитись сторінку школи/коледжу на UAI"
 
 msgid "View %name% sheet of hospital/home"
-msgstr ""
+msgstr "Дивитись сторінку лікарні/будинку - %name%"
 
 msgid "View explanation of %name% code"
-msgstr ""
+msgstr "Подивитись тлумачення коду %name%"
 
 msgid "Get identification card (pdf) for this establishment"
-msgstr ""
+msgstr "Отримати ідентифікаційну карту (pdf) цієї установи"
 
 msgid "View %name% page of this post office"
-msgstr ""
+msgstr "Подивитись сторінку %name% цього поштового відділення"
 
 msgid "View %name% sheet of memorial"
-msgstr ""
+msgstr "Подивитись сторінку %name% памʼятника"
 
 msgid "Even housenumber in odd address interpolation."
 msgstr "Парний номер будинку в інтерполяції непарних адрес."
@@ -26784,6 +26841,9 @@ msgstr ""
 "{0} – теґ для лінійних водних обʼєктів. Для позначення полігональних водних "
 "обʼєктів використовуйте {1} + {2}."
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr "скорочене позначення вулиці"
 
@@ -26926,20 +26986,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr "Точки дублюють теґи батьківської лінії"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
-"не зазначено мову Вікіпедії, використовуйте ''wikipedia''=''мова:заголовок "
-"сторінки''"
 
-msgid "unknown language prefix in wikipedia tag"
-msgstr "невідомий префікс мови теґу wikipedia"
+msgid "wikipedia tag has an unknown language prefix"
+msgstr ""
 
-msgid "deprecated format for wikipedia tag"
-msgstr "застарілий формат теґу wikipedia"
+msgid "wikipedia tag format is deprecated"
+msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr "''wikipedia''=''мова:назва сторінки''"
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr "Приховувати значки на малому масштабі"
 
@@ -27571,11 +27668,11 @@ msgstr "Всього знімків:"
 msgid "images"
 msgstr "знімків"
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
-msgstr "Символ ''{0}'' шрифту з дорожніми знаками має помилковий формат"
+msgid "Mapillary object layer"
+msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
-msgstr "Неможливо прочитати файл шрифту з ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
+msgstr ""
 
 msgid "Mapillary"
 msgstr "Mapillary"
@@ -27622,9 +27719,6 @@ msgstr "Режим з’єднування"
 msgid "Join/unjoin pictures"
 msgstr "З’єднати/роз’єднати зображення"
 
-msgid "Join Mapillary pictures"
-msgstr "З’єднати зображення Mapillary"
-
 msgid "Submit changeset"
 msgstr "Надіслати набір змін"
 
@@ -27660,9 +27754,6 @@ msgstr "Завантажити знімки."
 msgid "Walk mode"
 msgstr "Пішохідний режим"
 
-msgid "Start walk mode"
-msgstr "Запустити пішохідний режим"
-
 msgid "Zoom to selected image"
 msgstr "Масштабувати до виділеного знімка"
 
@@ -27768,18 +27859,18 @@ msgstr "Історія Mapillary"
 msgid "Open Mapillary history dialog"
 msgstr "Відкрити історію Mapillary"
 
+msgid "No image selected"
+msgstr "Не обрано жодного зображення"
+
+msgid "Press \"{0}\" to download images"
+msgstr ""
+
 msgid "Mapillary picture"
 msgstr "Знімок Mapillary"
 
 msgid "Open Mapillary window"
 msgstr "Відкрити вікно Mapillary"
 
-msgid "Mapillary dialog"
-msgstr "Mapillary"
-
-msgid "Open Mapillary main dialog"
-msgstr "Відкрити головний діалог Mapillary"
-
 msgid "Next picture"
 msgstr "Наступний знімок"
 
@@ -27832,6 +27923,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr "Попередній перегляд зображень при наведенні курсору на їх значок"
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr "Режим завантаження"
 
@@ -27907,6 +28001,12 @@ msgstr "Відомості про зображення"
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr "Показує докладну інформацію про поточний знімок Mapillary"
 
+msgid "View in browser"
+msgstr "Подивитись в оглядачі"
+
+msgid "Copy key"
+msgstr "Копіювати ключ"
+
 msgid "Add Mapillary tag"
 msgstr "Додати теґ Mapillary"
 
@@ -27928,6 +28028,12 @@ msgstr "послідовність не має ключа"
 msgid "Could not open the URL {0} in a browser"
 msgstr "Не можливо відкрити URL {0} в оглядачі"
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] "Вилучений {0} знімок"
@@ -27958,6 +28064,9 @@ msgstr[2] "Обернуто {0} зображень"
 msgid "2 images unjoined"
 msgstr "2 зображення роз’єднано"
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr "все, що є у видимій області"
 
@@ -27974,6 +28083,9 @@ msgstr ""
 "Завантажена ділянка з даними OSM завелика. Режим завантаження змінено до "
 "ділянки даних з OSM до наступного перезапуску шару."
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr "Завантаження"
 
@@ -28016,18 +28128,6 @@ msgstr "Не увішли до Mapillary"
 msgid "Uploading: {0}"
 msgstr "Надсилання: {0}"
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr "Ключ зображення ''{0}'' - недійсний!"
-
-msgid "The image key must not be null here!"
-msgstr "Ключ зображення не повинен бути null!"
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr "Ключ послідовності ''{0}'' - помилковий!"
-
-msgid "The sequence key must not be null here!"
-msgstr "Ключ послідовності не повинен дорівнювати null!"
-
 msgid "NanoLog"
 msgstr "NanoLog"
 
@@ -28631,6 +28731,9 @@ msgstr "Будинок:"
 msgid "Tags:"
 msgstr "Теґи:"
 
+msgid "Source:"
+msgstr "Джерело:"
+
 msgid "Name:"
 msgstr "Назва:"
 
@@ -28664,6 +28767,12 @@ msgstr "Намагаюсь знайти полігони у:"
 msgid "Created area"
 msgstr "Створена ділянка"
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] "Додати адресу"
+msgstr[1] "Додати адреси"
+msgstr[2] "Додати адреси"
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr "Неможливо визначити полігон в цьому місці."
 
@@ -28764,6 +28873,16 @@ msgstr "об’єднати точки"
 msgid "Merge nodes with existing nodes"
 msgstr "Об''єднати точки з існуючими точками"
 
+msgid "use austria address helper"
+msgstr "використовувати помічник додавання адрес (Австрія)"
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+"Автоматично намагатись відшукати правильну адресу за допомогою втулка "
+"Austria Address Helper"
+
 msgid "Debug"
 msgstr "Відлагодження"
 
@@ -28771,6 +28890,24 @@ msgid "Debugging mode will write images for each processing step."
 msgstr ""
 "В режимі відлагодження будут створені зображення для кожного кроку оробки."
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr "Узагальнення будівель"
 
@@ -28877,9 +29014,6 @@ msgstr "Немає адресних точок в середині будіве
 msgid "on polygon"
 msgstr "у багатокутнику"
 
-msgid "Add address"
-msgstr "Додати адресу"
-
 msgid "Helping tool for tag address"
 msgstr "Допоміжний інструмент для теґів адреси"
 
@@ -29519,15 +29653,6 @@ msgstr "Вилучити обрану схему зі списку."
 msgid "Color Schemes"
 msgstr "Колірні схеми"
 
-msgid "Conflate object pair"
-msgstr "Об’єднання пари об’єктів"
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] "Додано {0} об’єкт до підлеглого шару"
-msgstr[1] "Додано {0} об’єкти до підлеглого шару"
-msgstr[2] "Додано {0} об’єктів до підлеглого шару"
-
 msgid "Conflation"
 msgstr "Злиття"
 
@@ -29558,15 +29683,12 @@ msgstr "Налаштувати"
 msgid "Configure conflation options"
 msgstr "Налаштування параметрів злиття"
 
-msgid "Delete {0} conflation matches"
-msgstr "Вилучити {0} збігів"
-
-msgid "Remove {0} unmatched objects"
-msgstr "Вилучити {0} об’єктів, що не мають збігів"
-
 msgid "Remove selected matches"
 msgstr "Вилучити виділені збіги"
 
+msgid "Remove ({0})"
+msgstr "Вилучити ({0})"
+
 msgid "Conflate"
 msgstr "Злиття"
 
@@ -29576,8 +29698,11 @@ msgstr "Злиття виділених об’єктів"
 msgid "Conflation: {0}"
 msgstr "Злиття: {0}"
 
-msgid "Cannot replace geometry."
-msgstr "Неможливо замінити геометрію."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
+msgstr "Обʼєднати ({0})"
 
 msgid "Zoom to selected primitive(s)"
 msgstr "Масштабувати до виділеного примітиву(ів)"
@@ -29588,23 +29713,131 @@ msgstr "Вибрати виділені примітиви"
 msgid "Select the primitives currently selected in the list"
 msgstr "Вибрати примітиви виділені зараз в переліку"
 
-msgid "Match finder settings"
-msgstr "Налаштування пошуку збігів"
+msgid "Generating matches"
+msgstr "Генерування збігів"
 
-msgid "Match finder method"
-msgstr "Метод пошуку збігів"
+msgid "Finding matches"
+msgstr "Пошук збігів"
 
-msgid "Threshold distance"
-msgstr "Гранична відстань"
+msgid "Sorting scores"
+msgstr "Оцінка"
+
+msgid "Discarding inferior matches"
+msgstr "Відкинути внутрішні збіги"
+
+msgid "Subject"
+msgstr "Об’єкт"
+
+msgid "Conflate object pair"
+msgstr "Об’єднання пари об’єктів"
+
+msgid "Cannot replace geometry."
+msgstr "Неможливо замінити геометрію."
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] "Додано {0} об’єкт до підлеглого шару"
+msgstr[1] "Додано {0} об’єкти до підлеглого шару"
+msgstr[2] "Додано {0} об’єктів до підлеглого шару"
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr "Вилучити {0} об’єктів, що не мають збігів"
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Вага"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
+msgstr ""
+
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
-msgstr "Відстань більша за вказану рахуватиметься за нуль"
+msgid "List of tags to match"
+msgstr ""
 
-msgid "Centroid distance"
-msgstr "Відстань центроіду"
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
 
-msgid "Hausdorff distance"
-msgstr "Відстань Хаусдорфа"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
+
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
+msgstr ""
 
 msgid "Configure conflation settings"
 msgstr "Налаштування параметрів злиття"
@@ -29612,14 +29845,32 @@ msgstr "Налаштування параметрів злиття"
 msgid "Generate matches"
 msgstr "Знайти збіги"
 
-msgid "Layer:"
-msgstr "Шар:"
+msgid "Reference:"
+msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
-msgstr "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
+msgstr ""
 
-msgid "Subject"
-msgstr "Об’єкт"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Замінити геометрію"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
+msgstr ""
 
 msgid "Selections must be made for both reference and subject."
 msgstr "Потрібно виділити основний та підлеглий об’єкти"
@@ -29651,11 +29902,26 @@ msgstr "Нічого не виділено"
 msgid "Freeze reference selection"
 msgstr "Зафіксувати виділення в довідковому шарі"
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
-msgstr "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
+msgstr ""
 
-msgid "Invalid reference or subject"
-msgstr "Помилковий основний чи підлеглий об’єкти"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
+msgstr ""
 
 msgid "Download OSM data continuously"
 msgstr "Безперервно завантажувати дані з OSM"
@@ -30752,6 +31018,33 @@ msgstr "Імпорт векторної графіки"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "Файли SVG [втулок ImportVec] (*.svg)"
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr "Майстер вестибюлів …"
 
@@ -31016,9 +31309,6 @@ msgstr "Замінити лінію"
 msgid "Replace way of selected way with a new way"
 msgstr "Замінити виділену лінію новою"
 
-msgid "Replace Geometry"
-msgstr "Замінити геометрію"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -32356,9 +32646,6 @@ msgstr "Реагувати GPS-дані знімка"
 msgid "Please select an image first."
 msgstr "Оберіть спочатку знімок."
 
-msgid "No image selected"
-msgstr "Не обрано жодного зображення"
-
 msgid "(Empty values delete the according fields.)"
 msgstr "(Порожні значення видаляють відповідні поля.)"
 
@@ -32432,7 +32719,7 @@ msgid "Problem occurred"
 msgstr "Виникла проблема"
 
 msgid "Import World File Calibration..."
-msgstr ""
+msgstr "Імпортувати калібрування з world-файлу…"
 
 msgid "Loads calibration data from a world file"
 msgstr "Завантаження даних калібрування з файлу"
@@ -32456,10 +32743,10 @@ msgid "Saving file failed: {0}"
 msgstr "Не вдалося зберегти файл: {0}"
 
 msgid "Export World file Calibration..."
-msgstr ""
+msgstr "Експортувати калібрування у world-файл…"
 
 msgid "Saves calibration data to a world file"
-msgstr ""
+msgstr "Зберегти дані калібрування у world-файл…"
 
 msgid "New picture layer from clipboard"
 msgstr "Новий шар зображення з буфера обміну"
@@ -33374,6 +33661,12 @@ msgstr ""
 "Попередження: непідтримуваний кінцевий елемент ''{0}'' в наборі змін в "
 "позиції ({1},{2}). Пропускаємо."
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr "Втулок Дорожні знаки"
 
@@ -33503,9 +33796,6 @@ msgstr "Задати налаштування маршрутизації"
 msgid "Speed (Km/h)"
 msgstr "Швидкість (км/г)"
 
-msgid "Weight"
-msgstr "Вага"
-
 msgid "Enter weight values"
 msgstr "Введіть обмеження ваги"
 
diff --git a/i18n/po/ur.po b/i18n/po/ur.po
index e79eaed..eb36d33 100644
--- a/i18n/po/ur.po
+++ b/i18n/po/ur.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2010-05-13 04:15+0000\n"
 "Last-Translator: Shoaib Mirza <Unknown>\n"
 "Language-Team: Urdu <ur at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:20+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:15+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: ur\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1388,7 +1388,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7918,6 +7918,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9232,6 +9238,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14447,6 +14456,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14455,6 +14472,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14900,6 +14921,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14912,9 +14945,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14927,6 +14966,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15718,10 +15760,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15841,7 +15883,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16168,6 +16210,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16200,7 +16247,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16320,6 +16367,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16488,6 +16540,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24830,6 +24887,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24960,18 +25020,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25570,10 +25669,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25621,9 +25720,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25655,9 +25751,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25763,16 +25856,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25826,6 +25919,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25894,6 +25990,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25915,6 +26017,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25941,6 +26049,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25955,6 +26066,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25997,18 +26111,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26505,6 +26607,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26538,6 +26643,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26625,12 +26735,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26731,9 +26867,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27310,14 +27443,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27348,13 +27473,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27366,7 +27488,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27378,22 +27503,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27402,13 +27634,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27441,10 +27691,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28472,6 +28737,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28723,9 +29015,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29967,9 +30256,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30950,6 +31236,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31079,9 +31371,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/vi.po b/i18n/po/vi.po
index 8cd4586..cce7452 100644
--- a/i18n/po/vi.po
+++ b/i18n/po/vi.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2015-05-14 20:17+0000\n"
 "Last-Translator: Mạnh <laituanmanh32 at gmail.com>\n"
 "Language-Team: Vietnamese <vi at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:21+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:16+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: vi\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1484,8 +1484,8 @@ msgstr "Vẽ đường giữa các điểm gps liệu."
 msgid "Toggles the global setting ''{0}''."
 msgstr "Nhấn thả các thiết lập toàn cầu '' {0} ''."
 
-msgid "Encourage/discourage upload"
-msgstr "Khuyến khích / ngăn upload"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "UnGlue cách"
@@ -8387,6 +8387,12 @@ msgstr ""
 "<Html> Autostart '' Download từ OSM '' hộp thoại mỗi khi JOSM làBắt đầu. "
 "<br> Bạn có thể mở nó bằng tay từ menu File hoặc thanh công cụ. </ Html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9824,6 +9830,9 @@ msgstr "phiên bản API: {0}"
 msgid "Upload is discouraged"
 msgstr "Upload được nản lòng"
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "Chuyển đổi sang lớp GPX"
 
@@ -15578,6 +15587,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "dân cư"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "chà"
@@ -15586,6 +15603,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "associatedStreet"
@@ -16031,6 +16052,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -16043,9 +16076,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -16058,6 +16097,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -16851,10 +16893,10 @@ msgstr "Stadt Zürich Übersichtsplan (Strassen, Gebäude, Hausnummer)"
 msgid "Stadt Zürich Luftbild 2011"
 msgstr "Stadt Zürich Luftbild 2011"
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -16974,7 +17016,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -17308,6 +17350,11 @@ msgstr ""
 "basemap.at."
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -17350,8 +17397,8 @@ msgstr ""
 "Thực hiện một dòng lệnh và cho phép tạo ra các lệnh của bạn. Xem liên kết "
 "choLệnh chuẩn (arc, hình tròn vv)"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
-msgstr "(Cảnh báo: Thử nghiệm!) Công cụ cho conflating (sáp nhập) dữ liệu."
+msgid "Tool for conflating data (matching and merging)."
+msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
 msgstr ""
@@ -17490,6 +17537,11 @@ msgstr "Plugin cho nhập khẩu hình ảnh tham chiếu không gian"
 msgid "Import vector graphics (SVG)"
 msgstr "đồ họa vector nhập (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -17701,6 +17753,11 @@ msgid "Plugin for reverting changesets"
 msgstr "Plugin cho quay trở changesets"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -26138,6 +26195,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr "tên đường tắt"
 
@@ -26273,20 +26333,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr "Nodes nhân đôi cách mẹ tags"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
-"Không wikipedia-ngôn ngữ nhất định, sử dụng '' wikipedia '' = '' ngôn ngữ: "
-"tiêu đề trang ''"
 
-msgid "unknown language prefix in wikipedia tag"
-msgstr "không rõ tiền tố ngôn ngữ trong thẻ wikipedia"
+msgid "wikipedia tag has an unknown language prefix"
+msgstr ""
 
-msgid "deprecated format for wikipedia tag"
-msgstr "định dạng phản đối cho tag wikipedia"
+msgid "wikipedia tag format is deprecated"
+msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr "'' wikipedia '' = '' ngôn ngữ: tiêu đề trang ''"
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr "Ẩn biểu tượng ở zoom thấp"
 
@@ -26914,10 +27011,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -26965,9 +27062,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -26999,9 +27093,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -27107,16 +27198,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -27170,6 +27261,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -27238,6 +27332,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -27259,6 +27359,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -27285,6 +27391,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -27299,6 +27408,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -27341,18 +27453,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr "NanoLog"
 
@@ -27948,6 +28048,9 @@ msgstr "Xây dựng:"
 msgid "Tags:"
 msgstr "Tags:"
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "Name:"
 
@@ -27981,6 +28084,11 @@ msgstr ""
 msgid "Created area"
 msgstr "khu vực tạo"
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr "Không thể phát hiện một đối tượng vùng, bạn nhấp vào."
 
@@ -28072,12 +28180,38 @@ msgstr "hợp nhất nút"
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -28177,9 +28311,6 @@ msgstr "Không có các nút địa chỉ bên trong tòa nhà tìm thấy"
 msgid "on polygon"
 msgstr "trên đa giác"
 
-msgid "Add address"
-msgstr "Thêm địa chỉ"
-
 msgid "Helping tool for tag address"
 msgstr "Giúp công cụ cho địa chỉ tag"
 
@@ -28820,13 +28951,6 @@ msgstr "Xóa các chương trình được lựa chọn từ danh sách."
 msgid "Color Schemes"
 msgstr "Color Schemes"
 
-msgid "Conflate object pair"
-msgstr "conflate cặp đối tượng"
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] "Added {0} đối tượng cho lớp chủ đề"
-
 msgid "Conflation"
 msgstr "Conflation"
 
@@ -28857,15 +28981,12 @@ msgstr "Cấu hình"
 msgid "Configure conflation options"
 msgstr "Cấu hình tùy chọn conflation"
 
-msgid "Delete {0} conflation matches"
-msgstr "Xóa {0} conflation phù hợp"
-
-msgid "Remove {0} unmatched objects"
-msgstr "Xóa {0} đối tượng chưa từng có"
-
 msgid "Remove selected matches"
 msgstr "Hủy bỏ trận đấu được chọn"
 
+msgid "Remove ({0})"
+msgstr ""
+
 msgid "Conflate"
 msgstr "conflate"
 
@@ -28875,8 +28996,11 @@ msgstr "conflate đối tượng được chọn"
 msgid "Conflation: {0}"
 msgstr "Conflation: {0}"
 
-msgid "Cannot replace geometry."
-msgstr "Không thể thay thế hình học."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
+msgstr ""
 
 msgid "Zoom to selected primitive(s)"
 msgstr "Zoom để chọn nguyên thủy (s)"
@@ -28887,23 +29011,129 @@ msgstr "Chọn lựa chọn nguyên thủy (s)"
 msgid "Select the primitives currently selected in the list"
 msgstr "Chọn nguyên thủy hiện đang được chọn trong danh sách"
 
-msgid "Match finder settings"
-msgstr "công cụ tìm Match settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr "Tiêu đề"
+
+msgid "Conflate object pair"
+msgstr "conflate cặp đối tượng"
+
+msgid "Cannot replace geometry."
+msgstr "Không thể thay thế hình học."
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] "Added {0} đối tượng cho lớp chủ đề"
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr "Xóa {0} đối tượng chưa từng có"
 
-msgid "Match finder method"
-msgstr "phương pháp cụ tìm Match"
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
 
-msgid "Threshold distance"
-msgstr "Threshold khoảng cách"
+msgid " Max: "
+msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
-msgstr "Khoảng cách lớn hơn này sẽ dẫn đến một số điểm là zero."
+msgid "Filter by area. Min: "
+msgstr ""
 
-msgid "Centroid distance"
-msgstr "khoảng cách trọng tâm"
+msgid "Filter by window. Buffer: "
+msgstr ""
 
-msgid "Hausdorff distance"
-msgstr "Hausdorff khoảng cách"
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "Weight"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
+msgstr ""
+
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
+msgstr ""
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
+
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
+msgstr ""
 
 msgid "Configure conflation settings"
 msgstr "Cấu hình cài đặt conflation"
@@ -28911,14 +29141,32 @@ msgstr "Cấu hình cài đặt conflation"
 msgid "Generate matches"
 msgstr "Tạo ra các trận đấu"
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
-msgstr "Tiêu đề"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "Thay thế Geometry"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
+msgstr ""
 
 msgid "Selections must be made for both reference and subject."
 msgstr ""
@@ -28951,11 +29199,26 @@ msgstr "lựa chọn Empty"
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
-msgstr "tham chiếu không hợp lệ hay chủ đề"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
+msgstr ""
 
 msgid "Download OSM data continuously"
 msgstr ""
@@ -30040,6 +30303,33 @@ msgstr "đồ họa vector nhập khẩu"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "các tập tin SVG [ImportVec Plugin] (* .svg)"
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -30301,9 +30591,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr "Thay thế Geometry"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -31612,9 +31899,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -32617,6 +32901,12 @@ msgstr ""
 "Cảnh báo: yếu tố cuối không được hỗ trợ '' {0} '' trong nội dung changeset ở "
 "vị trí({1}, {2}). Bỏ qua"
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr "Road Đăng Plugin"
 
@@ -32746,9 +33036,6 @@ msgstr "Cấu hình định tuyến thích."
 msgid "Speed (Km/h)"
 msgstr "Tốc độ (Km / h)"
 
-msgid "Weight"
-msgstr "Weight"
-
 msgid "Enter weight values"
 msgstr "Nhập giá trị trọng lượng"
 
diff --git a/i18n/po/wae.po b/i18n/po/wae.po
index 197c054..37c2940 100644
--- a/i18n/po/wae.po
+++ b/i18n/po/wae.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2016-03-09 22:17+0000\n"
 "Last-Translator: Simon Legner <Unknown>\n"
 "Language-Team: Walser <wae at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:27+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:22+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
 msgstr ""
@@ -1387,7 +1387,7 @@ msgstr ""
 msgid "Toggles the global setting ''{0}''."
 msgstr ""
 
-msgid "Encourage/discourage upload"
+msgid "Discourage upload"
 msgstr ""
 
 msgid "UnGlue Ways"
@@ -7917,6 +7917,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9231,6 +9237,9 @@ msgstr ""
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr ""
 
@@ -14446,6 +14455,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr ""
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14454,6 +14471,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr ""
@@ -14899,6 +14920,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14911,9 +14944,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14926,6 +14965,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15717,10 +15759,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15840,7 +15882,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16167,6 +16209,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16199,7 +16246,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16319,6 +16366,11 @@ msgstr ""
 msgid "Import vector graphics (SVG)"
 msgstr ""
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16487,6 +16539,11 @@ msgid "Plugin for reverting changesets"
 msgstr ""
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24829,6 +24886,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -24959,18 +25019,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr ""
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25569,10 +25668,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25620,9 +25719,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25654,9 +25750,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25762,16 +25855,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25825,6 +25918,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25893,6 +25989,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25914,6 +26016,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25940,6 +26048,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -25954,6 +26065,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -25996,18 +26110,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26504,6 +26606,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr ""
 
@@ -26537,6 +26642,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26624,12 +26734,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26730,9 +26866,6 @@ msgstr ""
 msgid "on polygon"
 msgstr ""
 
-msgid "Add address"
-msgstr ""
-
 msgid "Helping tool for tag address"
 msgstr ""
 
@@ -27309,14 +27442,6 @@ msgstr ""
 msgid "Color Schemes"
 msgstr ""
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27347,13 +27472,10 @@ msgstr ""
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27365,7 +27487,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27377,22 +27502,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Threshold distance"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
 msgstr ""
 
-msgid "Centroid distance"
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27401,13 +27633,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27440,10 +27690,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28471,6 +28736,33 @@ msgstr ""
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28722,9 +29014,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29966,9 +30255,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -30949,6 +31235,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr ""
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr ""
 
@@ -31078,9 +31370,6 @@ msgstr ""
 msgid "Speed (Km/h)"
 msgstr ""
 
-msgid "Weight"
-msgstr ""
-
 msgid "Enter weight values"
 msgstr ""
 
diff --git a/i18n/po/zh_CN.po b/i18n/po/zh_CN.po
index 1f2a096..2c928d4 100644
--- a/i18n/po/zh_CN.po
+++ b/i18n/po/zh_CN.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
 "PO-Revision-Date: 2016-10-23 14:49+0000\n"
 "Last-Translator: mmyfl <Unknown>\n"
 "Language-Team: 汉语 <>\n"
@@ -18,8 +18,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:25+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:20+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: zh_CN\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1394,8 +1394,8 @@ msgstr "绘出原始 GPS 点之间的线条。"
 msgid "Toggles the global setting ''{0}''."
 msgstr "切换全局设置“{0}”。"
 
-msgid "Encourage/discourage upload"
-msgstr "推荐/不推荐上传"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "拆开路径"
@@ -7922,6 +7922,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr "<html>每次 JOSM 启动时自动显示“从 OSM 下载”对话框。<br>您可以从文件菜单或工具栏手动打开它。</html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9252,6 +9258,9 @@ msgstr "API 版本:{0}"
 msgid "Upload is discouraged"
 msgstr "不鼓励上传"
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "转换为 GPX 图层"
 
@@ -14551,6 +14560,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "住宅"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr "灌木"
@@ -14559,6 +14576,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr "树林"
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "关联的街道"
@@ -15004,6 +15025,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -15016,9 +15049,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -15031,6 +15070,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15822,10 +15864,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15945,7 +15987,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16272,6 +16314,11 @@ msgid ""
 msgstr "允许选择图层中的一块区域并自动生成多边形路径。用于方便地从底图中勾绘建筑物。"
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16306,8 +16353,8 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr "提供命令行让您创建自己的命令。请查阅链接以了解标准命令(arc、circle 等)"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
-msgstr "(警告:实验性!)用于冲突(合并)数据的工具。"
+msgid "Tool for conflating data (matching and merging)."
+msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
 msgstr "平移/缩放时下载新的数据"
@@ -16426,6 +16473,11 @@ msgstr "导入空间参照图片的插件"
 msgid "Import vector graphics (SVG)"
 msgstr "导入矢量图形(SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr "此插件简化室内走廊的绘制和编辑。"
 
@@ -16594,6 +16646,11 @@ msgid "Plugin for reverting changesets"
 msgstr "还原修改集合的插件"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -24936,6 +24993,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr "缩写的街道名称"
 
@@ -25066,18 +25126,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr "节点重复父路径的标签"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
 msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
+msgid "wikipedia tag has an unknown language prefix"
 msgstr ""
 
-msgid "deprecated format for wikipedia tag"
+msgid "wikipedia tag format is deprecated"
 msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr "\"wikipedia\"=\"语言代码:页面标题\""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25684,10 +25783,10 @@ msgstr "总图像:"
 msgid "images"
 msgstr "图像"
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25735,9 +25834,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr ""
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25769,9 +25865,6 @@ msgstr "上传图片。"
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr "缩放至选定图片"
 
@@ -25877,16 +25970,16 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25940,6 +26033,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -26008,6 +26104,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -26029,6 +26131,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] "已删除 {0} 张图像"
@@ -26052,6 +26160,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -26066,6 +26177,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr "正在下载"
 
@@ -26108,18 +26222,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26689,6 +26791,9 @@ msgstr ""
 msgid "Tags:"
 msgstr ""
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "名称:"
 
@@ -26722,6 +26827,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26809,12 +26919,38 @@ msgstr "合并节点"
 msgid "Merge nodes with existing nodes"
 msgstr "将节点合并至既有节点"
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr "调试"
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26915,9 +27051,6 @@ msgstr ""
 msgid "on polygon"
 msgstr "在多边形上"
 
-msgid "Add address"
-msgstr "添加地址"
-
 msgid "Helping tool for tag address"
 msgstr "帮助标记地址的工具"
 
@@ -27523,14 +27656,6 @@ msgstr "从列表中删除选定的配置。"
 msgid "Color Schemes"
 msgstr "颜色配置"
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27561,13 +27686,10 @@ msgstr "设置"
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27579,7 +27701,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27591,22 +27716,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
 msgstr ""
 
-msgid "Match finder method"
+msgid "Finding matches"
 msgstr ""
 
-msgid "Threshold distance"
+msgid "Sorting scores"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid "Discarding inferior matches"
 msgstr ""
 
-msgid "Centroid distance"
+msgid "Subject"
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "重量限制"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
+msgstr ""
+
+msgid "Tags (Levenshtein Distance): "
+msgstr ""
+
+msgid "List of tags to match"
+msgstr ""
+
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
+
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
+msgstr ""
+
+msgid "Simple Example"
+msgstr ""
+
+msgid "Advanced Example"
+msgstr ""
+
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27615,13 +27847,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
-msgstr "图层:"
+msgid "Reference:"
+msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
-msgstr "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
+msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr "替换几何图形"
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27654,10 +27904,25 @@ msgstr "空选择范围"
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
-msgstr "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
+msgstr ""
+
+msgid "Centroid"
+msgstr ""
+
+msgid "Hausdorff"
+msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -28699,6 +28964,33 @@ msgstr "导入矢量图形"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "SVG文件[ImportVec插件] (*.SVG)"
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28952,9 +29244,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr "替换几何图形"
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -30192,9 +30481,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -31177,6 +31463,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr "警告:在修改集合内容的位置({1},{2})有不支持的起始元素“{0}”。正在跳过。"
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr "路标插件"
 
@@ -31306,9 +31598,6 @@ msgstr "设定路线规划首选项"
 msgid "Speed (Km/h)"
 msgstr "速度限制(Km/h)"
 
-msgid "Weight"
-msgstr "重量限制"
-
 msgid "Enter weight values"
 msgstr "输入重量限制值"
 
diff --git a/i18n/po/zh_TW.po b/i18n/po/zh_TW.po
index 60830a3..6299373 100644
--- a/i18n/po/zh_TW.po
+++ b/i18n/po/zh_TW.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-02-26 23:41+0100\n"
-"PO-Revision-Date: 2017-02-20 16:28+0000\n"
+"POT-Creation-Date: 2017-03-23 03:37+0100\n"
+"PO-Revision-Date: 2017-03-05 16:51+0000\n"
 "Last-Translator: Supaplex <Unknown>\n"
 "Language-Team: Traditional Chinese\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2017-02-27 05:24+0000\n"
-"X-Generator: Launchpad (build 18328)\n"
+"X-Launchpad-Export-Date: 2017-03-24 05:19+0000\n"
+"X-Generator: Launchpad (build 18334)\n"
 "Language: zh_TW\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -560,7 +560,7 @@ msgid "Adjust the position of this imagery layer"
 msgstr "調整圖片圖層的位置"
 
 msgid "Adjust imagery offset"
-msgstr "調整圖片偏移"
+msgstr ""
 
 msgid ""
 "Use arrow keys or drag the imagery layer with mouse to adjust the imagery "
@@ -1391,8 +1391,8 @@ msgstr "繪出原始 gps 點之間的線條。"
 msgid "Toggles the global setting ''{0}''."
 msgstr "切換全城設定值「{0}」。"
 
-msgid "Encourage/discourage upload"
-msgstr "鼓勵/不鼓勵上傳"
+msgid "Discourage upload"
+msgstr ""
 
 msgid "UnGlue Ways"
 msgstr "取消黏合路徑"
@@ -7896,6 +7896,12 @@ msgid ""
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr "<html>每次 JOSM 啟動時自動顯示「從 OSM 下載」對話盒。<br>您可以從檔案選單或工具列手動開啟它。</html>"
 
+msgid "Zoom to downloaded data"
+msgstr ""
+
+msgid "Select to zoom to entire newly downloaded data."
+msgstr ""
+
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
@@ -9220,6 +9226,9 @@ msgstr "API 版本: {0}"
 msgid "Upload is discouraged"
 msgstr ""
 
+msgid "Upload is blocked"
+msgstr ""
+
 msgid "Convert to GPX layer"
 msgstr "轉換為 GPX 圖層"
 
@@ -10698,7 +10707,7 @@ msgid "Draw segment order numbers"
 msgstr "繪製區段順序編號"
 
 msgid "Draw segment order numbers on selected way"
-msgstr ""
+msgstr "為選擇路徑繪製區段順序編號"
 
 msgid "Draw boundaries of downloaded data"
 msgstr "繪出已下載資料的邊界"
@@ -10710,13 +10719,13 @@ msgid "Draw inactive layers in other color"
 msgstr "將未使用的圖層以其他顏色繪製"
 
 msgid "Display discardable keys"
-msgstr ""
+msgstr "顯示可丟棄的鍵"
 
 msgid "Highlight target ways and nodes"
 msgstr "突顯目標路徑和節點"
 
 msgid "Draw rubber-band helper line"
-msgstr ""
+msgstr "繪製橡皮筋輔助線"
 
 msgid "Smooth map graphics (antialiasing)"
 msgstr "平滑化地圖圖片(反鉅齒)"
@@ -10758,7 +10767,7 @@ msgid ""
 msgstr ""
 
 msgid "Hightlight target nodes and ways while drawing or selecting"
-msgstr ""
+msgstr "繪製或是選擇時,高亮度顯示目標節點和路徑"
 
 msgid ""
 "This option suppresses the filling of areas, overriding anything specified "
@@ -10800,7 +10809,7 @@ msgid "Everything"
 msgstr "每個物件"
 
 msgid "Name or offset"
-msgstr ""
+msgstr "名稱或是位移"
 
 msgid "None"
 msgstr "沒有"
@@ -10839,7 +10848,7 @@ msgid "Track date"
 msgstr "軌跡時間"
 
 msgid "Heat Map (dark = few, bright = many)"
-msgstr ""
+msgstr "熱力圖 (暗=少,亮=多)"
 
 msgid "Single Color (can be customized for named layers)"
 msgstr "單一顏色(可以為已命名的圖層自訂)"
@@ -10882,7 +10891,7 @@ msgid "Heat"
 msgstr ""
 
 msgid "Use points instead of lines for heat map"
-msgstr ""
+msgstr "熱力圖中使用點代替線段"
 
 msgid "Create markers when reading GPX"
 msgstr "讀取 GPX 時建立標記"
@@ -10897,7 +10906,7 @@ msgid "Smooth GPX graphics (antialiasing)"
 msgstr "平滑化 GPX 圖形 (反鋸齒)"
 
 msgid "Draw with Opacity (alpha blending) "
-msgstr ""
+msgstr "不透明度繪製程度(Alpha 混合) "
 
 msgid ""
 "Automatically make a marker layer from any waypoints when opening a GPX "
@@ -10983,28 +10992,28 @@ msgstr ""
 
 msgid ""
 "Collected points and track segments for a position and displayed as heat map."
-msgstr ""
+msgstr "收集某個位置的點和路徑片段顯示為熱力圖。"
 
 msgid "Allows to tune the track coloring for different average speeds."
 msgstr "允許依不同的平均速度調整軌跡顏色。"
 
 msgid "Selects the color schema for heat map."
-msgstr ""
+msgstr "熱力圖選擇這個配色格式"
 
 msgid "Track and Point Coloring"
 msgstr "軌跡與點的顏色"
 
 msgid "Overlay gain adjustment"
-msgstr ""
+msgstr "重疊增加調整"
 
 msgid "Lower limit of visibility"
-msgstr ""
+msgstr "能見度限制下限"
 
 msgid "Adjust the gain of overlay blending."
 msgstr ""
 
 msgid "Draw all GPX traces that exceed this threshold."
-msgstr ""
+msgstr "繪製超過此閾值的所有 GPX 軌跡。"
 
 msgid ""
 "Render engine uses points with simulated position error instead of lines. "
@@ -11050,10 +11059,10 @@ msgid "Use native file choosers (nicer, but do not support file filters)"
 msgstr "使用原生檔案選擇器 (較佳,但不支援檔案過濾)"
 
 msgid "Reverse zoom with mouse wheel"
-msgstr ""
+msgstr "反轉滑鼠滾輪縮放功能"
 
 msgid "Intermediate steps between native resolutions"
-msgstr ""
+msgstr "原生解析度之間的中間步驟"
 
 msgid "Show localized name in selection lists, if available"
 msgstr "如果可以,在選擇清單中顯示本地化的名稱"
@@ -11087,7 +11096,7 @@ msgid ""
 msgstr ""
 
 msgid "Zoom steps to get double scale"
-msgstr ""
+msgstr "縮放步驟以獲得雙倍縮放"
 
 msgid ""
 "Higher value means more steps needed, therefore zoom steps will be smaller"
@@ -11589,7 +11598,7 @@ msgid "Configure the list of sites where plugins are downloaded from"
 msgstr "設定用來下載外掛程式的網站清單"
 
 msgid "Load from list..."
-msgstr ""
+msgstr "從清單載入..."
 
 msgid "Load plugins from a list of plugins"
 msgstr ""
@@ -11979,7 +11988,7 @@ msgid "Check interval (minutes):"
 msgstr "檢查間隔 (分鐘):"
 
 msgid "Max age for closed notes (days):"
-msgstr ""
+msgstr "關閉的註解最多保存天數 (天)"
 
 msgid ""
 "Specifies the number of days a note needs to be closed to no longer be "
@@ -12040,13 +12049,13 @@ msgid "Please enter the OSM API URL."
 msgstr "請輸入 OSM API URL。"
 
 msgid "Use Overpass server for object downloads"
-msgstr ""
+msgstr "使用 Overpas 伺服器下載物件"
 
 msgid "Overpass server: "
-msgstr ""
+msgstr "Overpass 伺服器 "
 
 msgid "Overpass server"
-msgstr ""
+msgstr "Overpass 伺服器"
 
 msgid "Proxy settings"
 msgstr "代理伺服器設定值"
@@ -14497,6 +14506,14 @@ msgctxt "landuse"
 msgid "residential"
 msgstr "住宅區"
 
+msgctxt "landuse"
+msgid "greenfield"
+msgstr ""
+
+msgctxt "landuse"
+msgid "village_green"
+msgstr ""
+
 msgctxt "natural"
 msgid "scrub"
 msgstr ""
@@ -14505,6 +14522,10 @@ msgctxt "natural"
 msgid "wood"
 msgstr ""
 
+msgctxt "natural"
+msgid "grassland"
+msgstr ""
+
 msgctxt "Relation type"
 msgid "associatedStreet"
 msgstr "關聯的街道"
@@ -14950,6 +14971,18 @@ msgstr ""
 msgid "imagico.de OSM images for mapping: Rila and Pirin Mountains"
 msgstr ""
 
+msgid "OpenStreetMap (Belgian Style)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - French)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - Dutch)"
+msgstr ""
+
+msgid "OpenStreetMap (Belgian Style - German)"
+msgstr ""
+
 msgid "AGIV Flanders most recent aerial imagery"
 msgstr ""
 
@@ -14962,9 +14995,15 @@ msgstr ""
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISfr numerical imagery"
+msgstr ""
+
 msgid "URBISnl numerical imagery (2013)"
 msgstr ""
 
+msgid "URBISnl numerical imagery"
+msgstr ""
+
 msgid "URBIS 2009 aerial imagery"
 msgstr ""
 
@@ -14977,6 +15016,9 @@ msgstr ""
 msgid "URBIS 2015 aerial imagery"
 msgstr ""
 
+msgid "URBIS 2016 aerial imagery"
+msgstr ""
+
 msgid "SPW(allonie) PICC numerical imagery"
 msgstr ""
 
@@ -15768,10 +15810,10 @@ msgstr ""
 msgid "Stadt Zürich Luftbild 2011"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn RGB (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS RGB"
 msgstr ""
 
-msgid "Aerial imagery canton Solothurn Infrared (SOGIS 2013/2014/2015)"
+msgid "Canton Solothurn latest aerial imagery SOGIS Infrared"
 msgstr ""
 
 msgid "Canton de Génève 5cm (SITG 2011)"
@@ -15891,7 +15933,7 @@ msgstr ""
 msgid "Philadelphia 2015 Imagery"
 msgstr ""
 
-msgid "MD 2014 6 Inch Aerial Imagery"
+msgid "MD Latest 6 Inch Aerial Imagery"
 msgstr ""
 
 msgid "MD Three Inch Aerial Imagery"
@@ -16218,6 +16260,11 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Automatically assigns addresses to selected objects in Austria. Data (c) "
+"Österreichisches Adressregister."
+msgstr ""
+
+msgid ""
 "Allows the user to correct angle of buildings to 90 degrees, and aligns all "
 "loaded buildings to nearest road."
 msgstr ""
@@ -16250,7 +16297,7 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr "實作一個命令列讓您建立自己的指令。請查閱連結以了解標準指令 (arc, circle 等.)"
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Tool for conflating data (matching and merging)."
 msgstr ""
 
 msgid "Downloads new data when you pan/zoom"
@@ -16353,7 +16400,7 @@ msgstr ""
 msgid ""
 "Database of imagery offsets: share and aquire imagery offsets with one "
 "button."
-msgstr ""
+msgstr "圖片偏移資料庫:一鍵分享和取得圖片偏移。"
 
 msgid "WMSPlugin-style imagery adjustment mapmode"
 msgstr ""
@@ -16372,6 +16419,11 @@ msgstr "用來匯入空間參照圖片的外掛程式"
 msgid "Import vector graphics (SVG)"
 msgstr "匯入向量圖形 (SVG)"
 
+msgid ""
+"Extends ImproveWayAccuracy mode with helpers to place nodes at accurate "
+"distances and angles."
+msgstr ""
+
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
 msgstr ""
 
@@ -16540,6 +16592,11 @@ msgid "Plugin for reverting changesets"
 msgstr "還原變更組合的外掛程式"
 
 msgid ""
+"Expand a simple intersection to a roundabout in gradual steps. Select an "
+"intersection node or a roundabout and press Crtl-Shift-R"
+msgstr ""
+
+msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
 "can be opened by clicking a small icon in the upper right corner of the "
 "properties window. Available country presets: Belgium, Germany, Poland, "
@@ -16576,7 +16633,7 @@ msgid "Edit features for OpenSeaMap"
 msgstr ""
 
 msgid "Allows to draw splines"
-msgstr ""
+msgstr "允許繪製樣條"
 
 msgid ""
 "Allows to edit traffic information and export it to the urban mobility "
@@ -21869,7 +21926,7 @@ msgid "bascule"
 msgstr ""
 
 msgid "drawbridge"
-msgstr ""
+msgstr "吊橋"
 
 msgid "lift"
 msgstr ""
@@ -24882,6 +24939,9 @@ msgid ""
 "instead."
 msgstr ""
 
+msgid "node connects highway and building"
+msgstr ""
+
 msgid "abbreviated street name"
 msgstr ""
 
@@ -25012,18 +25072,57 @@ msgid "Nodes duplicating parent way tags"
 msgstr "節點具有重複的路徑標籤"
 
 msgid ""
-"no wikipedia-language given, use ''wikipedia''=''language:page title''"
-msgstr "沒有指定維基百科語言,請使用\"wikipedia\"=\"語言代碼:頁面標題\""
+"wikipedia tag has no language given, use ''wikipedia''=''language:page "
+"title''"
+msgstr ""
 
-msgid "unknown language prefix in wikipedia tag"
-msgstr "維基百科標籤後綴是未知的語言代碼"
+msgid "wikipedia tag has an unknown language prefix"
+msgstr ""
 
-msgid "deprecated format for wikipedia tag"
-msgstr "棄用的維基百科標籤格式"
+msgid "wikipedia tag format is deprecated"
+msgstr ""
 
 msgid "''wikipedia''=''language:page title''"
 msgstr "\"wikipedia\"=\"語言代碼:頁面標題\""
 
+msgid "wikipedia ''{0}'' language is obsolete, use ''{1}'' instead"
+msgstr ""
+
+msgid "wikipedia ''{0}'' language is invalid, use ''{1}'' instead"
+msgstr ""
+
+msgid "{0} tag should not have URL-encoded values like ''%27''"
+msgstr ""
+
+msgid "wikipedia title should not start with a space after language code"
+msgstr ""
+
+msgid "wikipedia title should not have ''{0}'' prefix"
+msgstr ""
+
+msgid "wikipedia page title should have first letter capitalized"
+msgstr ""
+
+msgid ""
+"wikipedia page title should have spaces instead of underscores (''_''→'' '')"
+msgstr ""
+
+msgid "wikipedia language seems to be duplicated, e.g. en:en:Foo"
+msgstr ""
+
+msgid "wikidata tag must be in Qnnnn format, where n is a digit"
+msgstr ""
+
+msgid ""
+"wikipedia tag is set, but there is no wikidata tag. Wikipedia plugin might "
+"help with wikidata id lookups"
+msgstr ""
+
+msgid ""
+"wikipedia tag is not set, but a ''{0}'' tag is. Make sure to use "
+"wikipedia=language:value together with wikidata tag."
+msgstr ""
+
 msgid "Hide icons at low zoom"
 msgstr ""
 
@@ -25363,10 +25462,10 @@ msgid "Allow edit existing ways"
 msgstr ""
 
 msgid "Draw closed polygons only"
-msgstr ""
+msgstr "只繪製封閉多邊形"
 
 msgid "FastDraw configuration"
-msgstr ""
+msgstr "快速繪製設定"
 
 msgid "Try copying tags from properties table"
 msgstr ""
@@ -25386,10 +25485,10 @@ msgid ""
 msgstr ""
 
 msgid "FastDrawing"
-msgstr ""
+msgstr "快速繪製"
 
 msgid "Fast drawing mode"
-msgstr ""
+msgstr "快速繪製模式"
 
 msgid "Please move the mouse to draw new way"
 msgstr ""
@@ -25621,10 +25720,10 @@ msgstr ""
 msgid "images"
 msgstr ""
 
-msgid "Traffic sign font at ''{0}'' has wrong format"
+msgid "Mapillary object layer"
 msgstr ""
 
-msgid "Could not read font-file from ''{0}''"
+msgid "Displays the layer displaying the map objects detected by Mapillary"
 msgstr ""
 
 msgid "Mapillary"
@@ -25672,9 +25771,6 @@ msgstr ""
 msgid "Join/unjoin pictures"
 msgstr ""
 
-msgid "Join Mapillary pictures"
-msgstr "加入Mapillary圖片"
-
 msgid "Submit changeset"
 msgstr ""
 
@@ -25706,9 +25802,6 @@ msgstr ""
 msgid "Walk mode"
 msgstr ""
 
-msgid "Start walk mode"
-msgstr ""
-
 msgid "Zoom to selected image"
 msgstr ""
 
@@ -25814,16 +25907,16 @@ msgstr "Mapillary歷史記錄"
 msgid "Open Mapillary history dialog"
 msgstr ""
 
-msgid "Mapillary picture"
+msgid "No image selected"
 msgstr ""
 
-msgid "Open Mapillary window"
+msgid "Press \"{0}\" to download images"
 msgstr ""
 
-msgid "Mapillary dialog"
+msgid "Mapillary picture"
 msgstr ""
 
-msgid "Open Mapillary main dialog"
+msgid "Open Mapillary window"
 msgstr ""
 
 msgid "Next picture"
@@ -25877,6 +25970,9 @@ msgstr ""
 msgid "Preview images when hovering its icon"
 msgstr ""
 
+msgid "Cut off sequences at download bounds"
+msgstr ""
+
 msgid "Download mode"
 msgstr ""
 
@@ -25945,6 +26041,12 @@ msgstr ""
 msgid "Displays detail information on the currently selected Mapillary image"
 msgstr ""
 
+msgid "View in browser"
+msgstr ""
+
+msgid "Copy key"
+msgstr ""
+
 msgid "Add Mapillary tag"
 msgstr ""
 
@@ -25966,6 +26068,12 @@ msgstr ""
 msgid "Could not open the URL {0} in a browser"
 msgstr ""
 
+msgid "Mapillary objects"
+msgstr ""
+
+msgid "Displays objects detected by Mapillary from their street view imagery"
+msgstr ""
+
 msgid "Deleted {0} image"
 msgid_plural "Deleted {0} images"
 msgstr[0] ""
@@ -25992,6 +26100,9 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "Could not read map objects from URL {0}!"
+msgstr ""
+
 msgid "everything in the visible area"
 msgstr ""
 
@@ -26006,6 +26117,9 @@ msgid ""
 "area until the layer is restarted."
 msgstr ""
 
+msgid "Could not read sequences from URL {0}!"
+msgstr ""
+
 msgid "Downloading"
 msgstr ""
 
@@ -26048,18 +26162,6 @@ msgstr ""
 msgid "Uploading: {0}"
 msgstr ""
 
-msgid "The image key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The image key must not be null here!"
-msgstr ""
-
-msgid "The sequence key ''{0}'' is invalid!"
-msgstr ""
-
-msgid "The sequence key must not be null here!"
-msgstr ""
-
 msgid "NanoLog"
 msgstr ""
 
@@ -26590,6 +26692,9 @@ msgstr ""
 msgid "Tags:"
 msgstr "標籤:"
 
+msgid "Source:"
+msgstr ""
+
 msgid "Name:"
 msgstr "名稱:"
 
@@ -26623,6 +26728,11 @@ msgstr ""
 msgid "Created area"
 msgstr ""
 
+msgid "Add address"
+msgid_plural "Add addresses"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
 
@@ -26710,12 +26820,38 @@ msgstr ""
 msgid "Merge nodes with existing nodes"
 msgstr ""
 
+msgid "use austria address helper"
+msgstr ""
+
+msgid ""
+"Automatically try to find the correct address via Austria Address Helper "
+"plugin"
+msgstr ""
+
 msgid "Debug"
 msgstr ""
 
 msgid "Debugging mode will write images for each processing step."
 msgstr ""
 
+msgid "Fetch Address"
+msgstr ""
+
+msgid "Austria Address Helper<br>Please select exactly one object."
+msgstr ""
+
+msgid "Austria Address Helper"
+msgstr ""
+
+msgid "Successfully added address to selected object:"
+msgstr ""
+
+msgid "No address was found for this object."
+msgstr ""
+
+msgid "An unexpected exception occurred:"
+msgstr ""
+
 msgid "Building Generalization"
 msgstr ""
 
@@ -26816,9 +26952,6 @@ msgstr ""
 msgid "on polygon"
 msgstr "於多邊形"
 
-msgid "Add address"
-msgstr "加入地址"
-
 msgid "Helping tool for tag address"
 msgstr "標籤位址的協助工具"
 
@@ -27424,14 +27557,6 @@ msgstr "從清單中刪除選取的配置。"
 msgid "Color Schemes"
 msgstr "顏色配置"
 
-msgid "Conflate object pair"
-msgstr ""
-
-msgid "Added {0} object to subject layer"
-msgid_plural "Added {0} objects to subject layer"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Conflation"
 msgstr ""
 
@@ -27462,13 +27587,10 @@ msgstr "設定"
 msgid "Configure conflation options"
 msgstr ""
 
-msgid "Delete {0} conflation matches"
-msgstr ""
-
-msgid "Remove {0} unmatched objects"
+msgid "Remove selected matches"
 msgstr ""
 
-msgid "Remove selected matches"
+msgid "Remove ({0})"
 msgstr ""
 
 msgid "Conflate"
@@ -27480,7 +27602,10 @@ msgstr ""
 msgid "Conflation: {0}"
 msgstr ""
 
-msgid "Cannot replace geometry."
+msgid "Conflate {0} objects"
+msgstr ""
+
+msgid "Conflate ({0})"
 msgstr ""
 
 msgid "Zoom to selected primitive(s)"
@@ -27492,22 +27617,129 @@ msgstr ""
 msgid "Select the primitives currently selected in the list"
 msgstr ""
 
-msgid "Match finder settings"
+msgid "Generating matches"
+msgstr ""
+
+msgid "Finding matches"
+msgstr ""
+
+msgid "Sorting scores"
+msgstr ""
+
+msgid "Discarding inferior matches"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Conflate object pair"
+msgstr ""
+
+msgid "Cannot replace geometry."
+msgstr ""
+
+msgid "Added {0} object to subject layer"
+msgid_plural "Added {0} objects to subject layer"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Moved {0} conflation match to unmatched list"
+msgid_plural "Moved {0} conflation matches to unmatched list"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete {0} conflation match"
+msgid_plural "Delete {0} conflation matches"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Remove {0} unmatched objects"
+msgstr ""
+
+msgid "Interrupted Sequence ({0}/{1}): {2}"
+msgstr ""
+
+msgid " Max: "
+msgstr ""
+
+msgid "Filter by area. Min: "
+msgstr ""
+
+msgid "Filter by window. Buffer: "
+msgstr ""
+
+msgid "Union up to "
+msgstr ""
+
+msgid " adjacent Reference features"
+msgstr ""
+
+msgid "Weight"
+msgstr "重量限制"
+
+msgid "Standard Distance"
+msgstr ""
+
+msgid "below"
+msgstr ""
+
+msgid "Maximum Distance"
+msgstr ""
+
+msgid "Centroid Distance"
+msgstr ""
+
+msgid "Hausdorff Distance (Centroids Aligned)"
+msgstr ""
+
+msgid "Symmetric Difference"
+msgstr ""
+
+msgid "Symmetric Difference (Centroids Aligned)"
+msgstr ""
+
+msgid "Compactness"
+msgstr ""
+
+msgid "Angle Histogram. Bins: "
+msgstr ""
+
+msgid "Tags (Exact Match): "
+msgstr ""
+
+msgid "Tags (Levenshtein Distance): "
 msgstr ""
 
-msgid "Match finder method"
+msgid "List of tags to match"
 msgstr ""
 
-msgid "Threshold distance"
+msgid ""
+"Filtering will speed up the matching process. Filter By Window weeds out "
+"matches between features whose envelopes do not overlap. Filter By Area is "
+"used to weed out very small and very large features."
+msgstr ""
+
+msgid ""
+"Better matches may be found by creating temporary unions of features sharing "
+"a common edge."
+msgstr ""
+
+msgid "Matching"
+msgstr ""
+
+msgid "Filtering"
+msgstr ""
+
+msgid "Unioning"
 msgstr ""
 
-msgid "Distances greater than this will result in a score of zero."
+msgid "Simple Example"
 msgstr ""
 
-msgid "Centroid distance"
+msgid "Advanced Example"
 msgstr ""
 
-msgid "Hausdorff distance"
+msgid "<Please select data>"
 msgstr ""
 
 msgid "Configure conflation settings"
@@ -27516,13 +27748,31 @@ msgstr ""
 msgid "Generate matches"
 msgstr ""
 
-msgid "Layer:"
+msgid "Reference:"
 msgstr ""
 
-msgid "{0}: 0 / {1}: 0 / {2}: 0"
+msgid "Subject:"
 msgstr ""
 
-msgid "Subject"
+msgid "Programming"
+msgstr ""
+
+msgid "Merging"
+msgstr ""
+
+msgid "Replace Geometry"
+msgstr ""
+
+msgid "Merge Tags"
+msgstr ""
+
+msgid "List of tags to merge"
+msgstr ""
+
+msgid "Overwrite tags without confirmation"
+msgstr ""
+
+msgid "List of tags to overwrite without confirmation"
 msgstr ""
 
 msgid "Selections must be made for both reference and subject."
@@ -27555,10 +27805,25 @@ msgstr ""
 msgid "Freeze reference selection"
 msgstr ""
 
-msgid "{0}: {1} / {2}: {3} / {4}: {5}"
+msgid "Disambiguating"
+msgstr ""
+
+msgid "One to One"
+msgstr ""
+
+msgid "Distance"
+msgstr ""
+
+msgid "Standard"
 msgstr ""
 
-msgid "Invalid reference or subject"
+msgid "Centroid"
+msgstr ""
+
+msgid "Hausdorff"
+msgstr ""
+
+msgid "List of tags to match (default: none)"
 msgstr ""
 
 msgid "Download OSM data continuously"
@@ -27685,7 +27950,7 @@ msgid "Please select 1 or more ways to download along"
 msgstr "請選擇 1 或多個路徑以沿線下載"
 
 msgid "Download from OSM along selected ways"
-msgstr ""
+msgstr "從 OSM 沿選擇路徑下載"
 
 msgid "{0} intermediate nodes to download."
 msgstr "下要載 {0} 個中間的節點。"
@@ -28373,7 +28638,7 @@ msgid "Deprecate Offset"
 msgstr ""
 
 msgid "Are you sure this imagery offset is wrong?"
-msgstr ""
+msgstr "你確定這份圖片偏移錯誤?"
 
 msgid "Are you sure this calibration geometry is aligned badly?"
 msgstr ""
@@ -28382,11 +28647,11 @@ msgid "Warning: deprecation is basically irreversible!"
 msgstr ""
 
 msgid "To store imagery offsets you must be a registered OSM user."
-msgstr ""
+msgstr "要儲存圖片偏移你必須是註冊的 OSM 使用者。"
 
 msgid ""
 "Please enter the reason why you mark this imagery offset as deprecated"
-msgstr ""
+msgstr "請輸入為何要標記棄用這份圖片偏移的理由"
 
 msgid ""
 "Please enter the reason why you mark this calibration geometry as deprecated"
@@ -28396,7 +28661,7 @@ msgid "Notifying the server of the deprecation..."
 msgstr ""
 
 msgid "Get Imagery Offset..."
-msgstr ""
+msgstr "取得圖片偏移..."
 
 msgid "Download offsets for current imagery from a server"
 msgstr ""
@@ -28406,7 +28671,7 @@ msgid ""
 msgstr ""
 
 msgid "Loading imagery offsets..."
-msgstr ""
+msgstr "載入圖片偏移..."
 
 msgid "Error processing XML response: {0}"
 msgstr ""
@@ -28415,7 +28680,7 @@ msgid "Offset"
 msgstr ""
 
 msgid "Imagery Offset Database"
-msgstr ""
+msgstr "圖片偏移資料庫"
 
 msgid "mm"
 msgstr ""
@@ -28462,7 +28727,7 @@ msgid "Reporting the offset..."
 msgstr ""
 
 msgid "An imagery offset of {0}"
-msgstr ""
+msgstr "{0} 的圖片偏移"
 
 msgid "Imagery ID"
 msgstr ""
@@ -28489,7 +28754,7 @@ msgid "Unable to connect to the server"
 msgstr ""
 
 msgid "Store Imagery Offset..."
-msgstr ""
+msgstr "儲存圖片偏移..."
 
 msgid ""
 "Upload an offset for current imagery (or calibration object geometry) to a "
@@ -28500,7 +28765,7 @@ msgid "Store calibration geometry"
 msgstr ""
 
 msgid "Store imagery offset"
-msgstr ""
+msgstr "儲存圖片偏移"
 
 msgid ""
 "The selected object can be used as a calibration geometry. What do you "
@@ -28518,6 +28783,8 @@ msgid ""
 "Please make sure it is as precise as possible, and describe a region this "
 "offset is applicable to."
 msgstr ""
+"你要註冊這份圖片偏移。這一地區其他使用者都能在畫地圖時使用。\n"
+"請盡可能確認這份是越準確越好,而且描述這份偏移適用的地區。"
 
 msgid ""
 "You are registering a calibration geometry. It should be the most precisely "
@@ -28595,6 +28862,33 @@ msgstr "匯入向量圖形"
 msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr ""
 
+msgid "Improve Way"
+msgstr ""
+
+msgid "Improve Way mode"
+msgstr ""
+
+msgid "Mode: Enable way accuracy helpers"
+msgstr ""
+
+msgid "improve way accuracy helper turn angle text"
+msgstr ""
+
+msgid "improve way accuracy helper distance text"
+msgstr ""
+
+msgid "improve way accuracy helper arc fill"
+msgstr ""
+
+msgid "improve way accuracy helper arc stroke"
+msgstr ""
+
+msgid "improve way accuracy helper perpendicular line"
+msgstr ""
+
+msgid "improve way accuracy helper equal angle circle"
+msgstr ""
+
 msgid "Concourse wizard ..."
 msgstr ""
 
@@ -28848,9 +29142,6 @@ msgstr ""
 msgid "Replace way of selected way with a new way"
 msgstr ""
 
-msgid "Replace Geometry"
-msgstr ""
-
 msgid ""
 "This tool replaces coastline of one way with another, and so requires "
 "exactly two coatline ways to be selected."
@@ -29459,17 +29750,17 @@ msgid ""
 msgstr ""
 
 msgid "Overpass API server:"
-msgstr ""
+msgstr "Overpass API 伺服器"
 
 msgid "Overpass API server used to download OSM data"
-msgstr ""
+msgstr "下載 OSM 資料連線的 Overpass API 伺服器"
 
 msgid "XAPI server:"
 msgstr ""
 
 msgid ""
 "XAPI server used to download OSM data when Overpass API is not available"
-msgstr ""
+msgstr "當 Overpass API 無法連線時,從 XAPI 伺服器下載 OSM 資料"
 
 msgid "Download modules"
 msgstr ""
@@ -30093,9 +30384,6 @@ msgstr ""
 msgid "Please select an image first."
 msgstr ""
 
-msgid "No image selected"
-msgstr ""
-
 msgid "(Empty values delete the according fields.)"
 msgstr ""
 
@@ -31076,6 +31364,12 @@ msgid ""
 "({1},{2}). Skipping."
 msgstr "警告:在變更組合內容的位置 ({1},{2}) 有不支援的結尾元素「{0}」。正在略過。"
 
+msgid "Create Roundabout"
+msgstr ""
+
+msgid "Roundabout Expander"
+msgstr ""
+
 msgid "Road Sign Plugin"
 msgstr "路標外掛程式"
 
@@ -31205,9 +31499,6 @@ msgstr "設定路線規畫偏好設定"
 msgid "Speed (Km/h)"
 msgstr "速限 (Km/h)"
 
-msgid "Weight"
-msgstr "重量限制"
-
 msgid "Enter weight values"
 msgstr "輸入重量限制值"
 
diff --git a/i18n/specialmessages.java b/i18n/specialmessages.java
index 62253e9..8cf5c7f 100644
--- a/i18n/specialmessages.java
+++ b/i18n/specialmessages.java
@@ -18,8 +18,13 @@
 /* Landuse type used in multipolygons */ trc("landuse", "meadow");
 /* Landuse type used in multipolygons */ trc("landuse", "farmland");
 /* Landuse type used in multipolygons */ trc("landuse", "residential");
+/* Landuse type used in multipolygons */ trc("landuse", "greenfield");
+/* Landuse type used in multipolygons */ trc("landuse", "village_green");
+/* Landuse type used in multipolygons */ trc("landuse", "greenfield");
+/* Landuse type used in multipolygons */ trc("landuse", "quarry");
 /* Landuse type used in multipolygons */ trc("natural", "scrub");
 /* Landuse type used in multipolygons */ trc("natural", "wood");
+/* Landuse type used in multipolygons */ trc("natural", "grassland");
 /* relation type */ trc("Relation type", "associatedStreet");
 /* relation type */ trc("Relation type", "boundary");
 /* relation type */ trc("Relation type", "bridge");
diff --git a/images/presets/shop/lottery.svg b/images/presets/shop/lottery.svg
index 722b016..a5a1e1b 100644
--- a/images/presets/shop/lottery.svg
+++ b/images/presets/shop/lottery.svg
@@ -1,21 +1,24 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!-- Created with Inkscape (http://www.inkscape.org/) -->
+
 <svg
    xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:cc="http://creativecommons.org/ns#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="64"
-   height="64"
+   width="16"
+   height="16"
    id="svg1307"
    sodipodi:version="0.32"
-   inkscape:version="0.43"
+   inkscape:version="0.92.0 r15299"
    version="1.0"
-   sodipodi:docbase="/tmp/wikinews"
-   sodipodi:docname="Lotto-v1.svg">
+   sodipodi:docname="lottery2.svg"
+   inkscape:export-filename="/tmp/a/lottery.svg.png"
+   inkscape:export-xdpi="24.610001"
+   inkscape:export-ydpi="24.610001">
   <defs
      id="defs1309" />
   <sodipodi:namedview
@@ -25,17 +28,22 @@
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="4"
-     inkscape:cx="30.25"
-     inkscape:cy="23.910307"
+     inkscape:zoom="5.6568542"
+     inkscape:cx="-4.4362063"
+     inkscape:cy="38.376906"
      inkscape:current-layer="layer1"
      showgrid="true"
      inkscape:document-units="px"
      inkscape:grid-bbox="true"
-     inkscape:window-width="984"
-     inkscape:window-height="719"
-     inkscape:window-x="0"
-     inkscape:window-y="0" />
+     inkscape:window-width="1680"
+     inkscape:window-height="987"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
   <metadata
      id="metadata1312">
     <rdf:RDF>
@@ -44,304 +52,233 @@
         <dc:format>image/svg+xml</dc:format>
         <dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
       </cc:Work>
     </rdf:RDF>
   </metadata>
   <g
      id="layer1"
      inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
+     inkscape:groupmode="layer"
+     transform="translate(-0.67547128,-48.251355)">
+    <rect
+       style="fill:#b3b3b3;fill-opacity:1;stroke:#000000;stroke-width:0.25327188;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2216"
+       width="13.67659"
+       height="9.1756859"
+       x="16.400665"
+       y="45.785957"
+       transform="matrix(0.96411667,0.26547889,-0.27255437,0.96214038,0,0)" />
     <g
-       id="g6865">
+       id="g4600"
+       style="fill:#ffffff;stroke:none;stroke-opacity:1"
+       inkscape:export-xdpi="24"
+       inkscape:export-ydpi="24"
+       transform="matrix(0.25635193,0,0,0.25274321,0.51329126,48.011198)">
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="-1.3614551"
-         x="10.326274"
-         height="34"
-         width="50.067074"
-         id="rect2216"
-         style="fill:#d99f9f;fill-opacity:1;stroke:#000000;stroke-width:0.93292624;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-      <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="0.60500801"
-         x="20.35981"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="0.64534187"
+         x="21.717131"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2224"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="0.60500801"
-         x="28.35981"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="0.64534187"
+         x="30.250463"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2226"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="0.60500801"
-         x="36.35981"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="0.64534187"
+         x="38.783798"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2228"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="0.60500801"
-         x="44.35981"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="0.64534187"
+         x="47.317131"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2235"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="0.60500801"
-         x="12.359811"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="0.64534187"
+         x="13.183798"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2286"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="0.60500801"
-         x="52.35981"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="0.64534187"
+         x="55.850464"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2288"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="8.6050081"
-         x="20.35981"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="9.1786757"
+         x="21.717131"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2290"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="8.6050081"
-         x="28.35981"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="9.1786757"
+         x="30.250463"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2292"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="8.6050081"
-         x="36.359814"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="9.1786757"
+         x="38.783802"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2294"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="8.6050081"
-         x="44.359814"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="9.1786757"
+         x="47.317135"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2296"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="8.6050081"
-         x="12.359811"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="9.1786757"
+         x="13.183798"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2298"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="8.6050081"
-         x="52.359814"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="9.1786757"
+         x="55.850468"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2300"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="16.605007"
-         x="20.359804"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="17.712008"
+         x="21.717125"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2302"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="16.605007"
-         x="28.359804"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="17.712008"
+         x="30.250458"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2304"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="16.605007"
-         x="36.35981"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="17.712008"
+         x="38.783798"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2306"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="16.605007"
-         x="44.35981"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="17.712008"
+         x="47.317131"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2308"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="16.605007"
-         x="12.359806"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="17.712008"
+         x="13.183793"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2310"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="16.605007"
-         x="52.35981"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="17.712008"
+         x="55.850464"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2312"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="24.605007"
-         x="20.35981"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="26.24534"
+         x="21.717131"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2314"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="24.605007"
-         x="28.35981"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="26.24534"
+         x="30.250463"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2316"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="24.605007"
-         x="36.359818"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="26.24534"
+         x="38.783806"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2318"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="24.605007"
-         x="44.359814"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="26.24534"
+         x="47.317135"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2320"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="24.605007"
-         x="12.359812"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="26.24534"
+         x="13.183799"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2322"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
       <rect
-         transform="matrix(0.963141,0.268997,-0.268997,0.963141,0,0)"
-         y="24.605007"
-         x="52.359814"
-         height="6"
-         width="6"
+         transform="rotate(15.604591)"
+         y="26.24534"
+         x="55.850468"
+         height="6.4000001"
+         width="6.4000001"
          id="rect2324"
-         style="fill:none;fill-opacity:1;stroke:#b50023;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-      <path
-         id="path4082"
-         d="M 11.394423,3.291391 C 13.19723,7.6344064 14.111461,10.595961 15.865574,13.305076 C 16.073049,13.625509 16.407577,13.842783 16.678578,14.111636"
-         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-      <path
-         id="path4084"
-         d="M 16.904272,5.868514 C 17.309376,6.4941709 15.445697,6.1804209 14.708993,6.293661 C 12.874321,6.5756717 11.899317,9.161173 10.609804,9.8182242"
-         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-    </g>
-    <g
-       id="g6894"
-       transform="translate(-0.163838,-37.41383)">
-      <g
-         transform="matrix(1.310345,0,0,1.310345,-27.2672,12.59487)"
-         id="g4137">
-        <path
-           sodipodi:type="arc"
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.76315778;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           id="path1315"
-           sodipodi:cx="19.710602"
-           sodipodi:cy="30.85437"
-           sodipodi:rx="6.805903"
-           sodipodi:ry="6.805903"
-           d="M 26.516505 30.85437 A 6.805903 6.805903 0 1 1  12.904699,30.85437 A 6.805903 6.805903 0 1 1  26.516505 30.85437 z"
-           transform="translate(33.5953,16.45153)" />
-        <text
-           xml:space="preserve"
-           style="font-size:6px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-           x="49.560547"
-           y="49.453125"
-           id="text2212"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan2214"
-             x="49.560547"
-             y="49.453125">23</tspan></text>
-      </g>
-      <g
-         transform="matrix(1.310345,0,0,1.310345,-0.646509,6.456979)"
-         id="g4127">
-        <path
-           sodipodi:type="arc"
-           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.76315778;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
-           id="path2202"
-           sodipodi:cx="19.710602"
-           sodipodi:cy="30.85437"
-           sodipodi:rx="6.805903"
-           sodipodi:ry="6.805903"
-           d="M 26.516505 30.85437 A 6.805903 6.805903 0 1 1  12.904699,30.85437 A 6.805903 6.805903 0 1 1  26.516505 30.85437 z"
-           transform="translate(2.595301,21.45153)" />
-        <text
-           xml:space="preserve"
-           style="font-size:4.94748735px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-           x="39.434193"
-           y="58.444778"
-           id="text2204"
-           sodipodi:linespacing="100%"
-           transform="matrix(1.143483,0.274659,-0.403949,0.777495,0,0)"><tspan
-             sodipodi:role="line"
-             id="tspan2206"
-             x="39.434193"
-             y="58.444778">12</tspan></text>
-      </g>
-      <g
-         transform="matrix(1.310345,0,0,1.310345,4.353479,2.465499)"
-         id="g4132">
-        <path
-           sodipodi:type="arc"
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.76315778;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           id="path2198"
-           sodipodi:cx="19.710602"
-           sodipodi:cy="30.85437"
-           sodipodi:rx="6.805903"
-           sodipodi:ry="6.805903"
-           d="M 26.516505 30.85437 A 6.805903 6.805903 0 1 1  12.904699,30.85437 A 6.805903 6.805903 0 1 1  26.516505 30.85437 z"
-           transform="translate(17.9835,18.83973)" />
-        <text
-           xml:space="preserve"
-           style="font-size:5.03230143px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-           x="45.061573"
-           y="43.613289"
-           id="text2208"
-           sodipodi:linespacing="125%"
-           transform="scale(0.838717,1.192297)"><tspan
-             sodipodi:role="line"
-             id="tspan2210"
-             x="45.061573"
-             y="43.613289">42</tspan></text>
-      </g>
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
     </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.68839455px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#00dc00;fill-opacity:1;stroke:#005a00;stroke-width:0.30129293;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="6.4408159"
+       y="62.544891"
+       id="text4556"
+       transform="scale(1.0071139,0.99293639)"><tspan
+         sodipodi:role="line"
+         id="tspan4554"
+         x="6.4408159"
+         y="62.544891"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;fill:#00dc00;fill-opacity:1;stroke:#005a00;stroke-width:0.30129293;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">$</tspan></text>
   </g>
 </svg>
diff --git a/netbeans/nbproject/project.properties b/netbeans/nbproject/project.properties
index b1da894..296bc3d 100644
--- a/netbeans/nbproject/project.properties
+++ b/netbeans/nbproject/project.properties
@@ -30,7 +30,7 @@ dist.dir=dist
 dist.jar=${dist.dir}/josm.jar
 dist.javadoc.dir=${dist.dir}/javadoc
 endorsed.classpath=
-excludes=org/apache/commons/compress/compressors/lz4/**,org/apache/commons/compress/compressors/lz77support/**,org/apache/commons/compress/compressors/lzma/**,org/apache/commons/compress/compressors/xz/**,org/apache/commons/compress/compressors/CompressorStreamFactory.java,org/apache/commons/compress/compressors/deflate/**,org/apache/commons/compress/compressors/gzip/**,org/apache/commons/compress/compressors/lzw/**,org/apache/commons/compress/compressors/pack200/**,org/apache/commons/co [...]
+excludes=org/apache/commons/compress/compressors/lz4/**,org/apache/commons/compress/compressors/lz77support/**,org/apache/commons/compress/compressors/lzma/**,org/apache/commons/compress/compressors/xz/**,org/apache/commons/compress/compressors/CompressorStreamFactory.java,org/apache/commons/compress/compressors/deflate/**,org/apache/commons/compress/compressors/gzip/**,org/apache/commons/compress/compressors/lzw/**,org/apache/commons/compress/compressors/pack200/**,org/apache/commons/co [...]
 file.reference.commons-collections-3.2.2.jar=../test/lib/unitils-core/commons-collections-3.2.2.jar
 file.reference.commons-lang-2.6.jar=../test/lib/unitils-core/commons-lang-2.6.jar
 file.reference.commons-logging-1.1.3.jar=../test/lib/unitils-core/commons-logging-1.1.3.jar
diff --git a/scripts/SyncEditorLayerIndex.groovy b/scripts/SyncEditorLayerIndex.groovy
index 42557d0..149e605 100644
--- a/scripts/SyncEditorLayerIndex.groovy
+++ b/scripts/SyncEditorLayerIndex.groovy
@@ -4,7 +4,7 @@
  * The goal is to keep both lists in sync.
  *
  * The editor imagery index project (https://github.com/osmlab/editor-imagery-index)
- * provides also a version in the JOSM format, but the JSON is the original source
+ * provides also a version in the JOSM format, but the GEOJSON is the original source
  * format, so we read that.
  *
  * How to run:
@@ -71,7 +71,7 @@ class SyncEditorImageryIndex {
     static void parse_command_line_arguments(args) {
         def cli = new CliBuilder(width: 160)
         cli.o(longOpt:'output', args:1, argName: "output", "Output file, - prints to stdout (default: -)")
-        cli.e(longOpt:'eli_input', args:1, argName:"eli_input", "Input file for the editor imagery index (json). Default is $eliInputFile (current directory).")
+        cli.e(longOpt:'eli_input', args:1, argName:"eli_input", "Input file for the editor imagery index (geojson). Default is $eliInputFile (current directory).")
         cli.j(longOpt:'josm_input', args:1, argName:"josm_input", "Input file for the JOSM imagery list (xml). Default is $josmInputFile (current directory).")
         cli.i(longOpt:'ignore_input', args:1, argName:"ignore_input", "Input file for the ignore list. Default is $ignoreInputFile (current directory).")
         cli.s(longOpt:'shorten', "shorten the output, so it is easier to read in a console window")
@@ -304,7 +304,7 @@ class SyncEditorImageryIndex {
                 myprintln "* Quality differs (${getQuality(e)} != ${getQuality(j)}): ${getDescription(j)}"
             }
         }
-        /*myprintln "*** Same URL, but different dates: ***"
+        myprintln "*** Same URL, but different dates: ***"
         for (def url : eliUrls.keySet()) {
             def ed = getDate(eliUrls.get(url))
             if (!josmUrls.containsKey(url)) continue
@@ -319,7 +319,7 @@ class SyncEditorImageryIndex {
                 Calendar cal = Calendar.getInstance();
                 cal.set(reg[0][2] as Integer, reg[0][4] == null ? 0 : (reg[0][4] as Integer)-1, reg[0][6] == null ? 1 : reg[0][6] as Integer)
                 cal.add(Calendar.DAY_OF_MONTH, -1)
-                ed2 = cal.get(Calendar.YEAR)
+                ed2 = reg[0][1] + cal.get(Calendar.YEAR)
                 if (reg[0][4] != null)
                     ed2 += "-" + String.format("%02d", cal.get(Calendar.MONTH)+1)
                 if (reg[0][6] != null)
@@ -331,9 +331,15 @@ class SyncEditorImageryIndex {
                 if (!ed.equals(ef)) {
                     t += " or '${ef}'";
                 }
-                myprintln "* Date differs (${t} != '${jd}'): ${getDescription(j)}"
+                if (jd.isEmpty()) {
+                    myprintln "- Missing JOSM date (${t}): ${getDescription(j)}"
+                } else if (!ed.isEmpty()) {
+                    myprintln "* Date differs (${t} != '${jd}'): ${getDescription(j)}"
+                } else if (!options.nomissingeli) {
+                    myprintln "+ Missing ELI date ('${jd}'): ${getDescription(j)}"
+                }
             }
-        }*/
+        }
         myprintln "*** Mismatching shapes: ***"
         for (def url : josmUrls.keySet()) {
             def j = josmUrls.get(url)
diff --git a/presets_lang.pl b/scripts/presets_lang.pl
similarity index 82%
rename from presets_lang.pl
rename to scripts/presets_lang.pl
index b3e5cf0..8e1db9a 100755
--- a/presets_lang.pl
+++ b/scripts/presets_lang.pl
@@ -40,14 +40,21 @@ sub handle_start
       {
         $datan{"de"} = "/wiki/Proposed_features/De:Hausnummern";
       }
-      while($main =~ /<bdi lang="([a-z_A-Z-]+)"(?: style="unicode-bidi:embed;unicode-bidi:-webkit-isolate;unicode-bidi:isolate")?><a href="(\/wiki\/.*?)"/g)
+      while($main =~ /<a href="(\/wiki\/[^"]+)"[^>]+><b>·<\/b> <bdi lang="([a-z_A-Z-]+)"(?: style="unicode-bidi:embed;unicode-bidi:-webkit-isolate;unicode-bidi:isolate")?>/g)
       {
-        my $lang = lc($1);
-        my $val = uri_unescape($2);
+        my $lang = lc($2);
+        my $val = uri_unescape($1);
         $lang = "$1_".uc($2) if($lang =~ /^(..)[_-](..)$/);
         $lang = "zh_CN" if $lang eq "zh-hans";
         $lang = "zh_TW" if $lang eq "zh-hant";
-        $datan{$lang} = $val;
+        if(-f "data/$lang.lang")
+        {
+          $datan{$lang} = $val;
+        }
+        else
+        {
+          print "Skip lang $lang\n";
+        }
       }
       while($main =~ /<a href="(\/wiki\/([a-zA-Z-_]):.*?)".*? • /g)
       {
diff --git a/snapcraft.yaml b/snapcraft.yaml
new file mode 100644
index 0000000..c2d230a
--- /dev/null
+++ b/snapcraft.yaml
@@ -0,0 +1,46 @@
+name: josm
+version: 0.git
+summary: Editor for OpenStreetMap
+description: |
+ JOSM is an editor for OpenStreetMap (OSM) written in Java.
+ The current version supports stand alone GPX tracks, GPX track data
+ from OSM database and existing nodes, line segments and metadata tags
+ from the OSM database.
+ 
+ OpenStreetMap is a project aimed squarely at creating and providing
+ free geographic data such as street maps to anyone who wants them.
+ The project was started because most maps you think of as free actually
+ have legal or technical restrictions on their use, holding back people
+ from using them in creative, productive or unexpected ways.
+confinement: strict
+grade: devel
+icon: linux/tested/usr/share/icons/hicolor/128x128/apps/josm.png
+
+apps:
+ josm:
+   command: josm-launch
+   desktop: josm.desktop
+   plugs: [unity7, network, home]
+
+parts:
+    local:
+        plugin: ant
+        ant-properties:
+            dist.dir: $SNAPCRAFT_PART_INSTALL
+        source: .
+        install: |
+            cp -a linux/tested/usr/share/applications/josm.desktop $SNAPCRAFT_PART_INSTALL/
+            cat<<'EOF' > $SNAPCRAFT_PART_INSTALL/josm-launch
+            #!/bin/sh
+            # ensure font-config is happy
+            export XDG_DATA_HOME=$SNAP/usr/share
+            export FONTCONFIG_PATH=$SNAP/etc/fonts/config.d
+            export FONTCONFIG_FILE=$SNAP/etc/fonts/fonts.conf
+            export HOME=$SNAP_USER_DATA
+            # ensure java is happy as well
+            export JRE_HOME=$SNAP/usr/lib/jvm/default-java/jre
+            export JAVA_HOME=$SNAP/usr/lib/jvm/default-java/jre
+            java -Duser.home=$SNAP_USER_DATA -jar $SNAP/josm-custom.jar
+            EOF
+            chmod +x $SNAPCRAFT_PART_INSTALL/josm-launch
+          
diff --git a/src/org/openstreetmap/josm/Main.java b/src/org/openstreetmap/josm/Main.java
index ed25c52..8de8833 100644
--- a/src/org/openstreetmap/josm/Main.java
+++ b/src/org/openstreetmap/josm/Main.java
@@ -20,7 +20,6 @@ import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.EnumSet;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -82,6 +81,7 @@ import org.openstreetmap.josm.gui.layer.MainLayerManager;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer.CommandQueueListener;
 import org.openstreetmap.josm.gui.layer.TMSLayer;
 import org.openstreetmap.josm.gui.preferences.ToolbarPreferences;
+import org.openstreetmap.josm.gui.preferences.display.LafPreference;
 import org.openstreetmap.josm.gui.preferences.imagery.ImageryPreference;
 import org.openstreetmap.josm.gui.preferences.map.MapPaintPreference;
 import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;
@@ -112,6 +112,7 @@ import org.openstreetmap.josm.tools.RightAndLefthandTraffic;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Territories;
 import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.tools.bugreport.BugReport;
 
 /**
  * Abstract class holding various static global variables and methods used in large parts of JOSM application.
@@ -154,11 +155,6 @@ public abstract class Main {
     public static volatile Main main;
 
     /**
-     * Command-line arguments used to run the application.
-     */
-    protected static final List<String> COMMAND_LINE_ARGS = new ArrayList<>();
-
-    /**
      * The worker thread slave. This is for executing all long and intensive
      * calculations. The executed runnables are guaranteed to be executed separately
      * and sequential.
@@ -210,7 +206,7 @@ public abstract class Main {
      */
     public static final FileWatcher fileWatcher = new FileWatcher();
 
-    protected static final Map<String, Throwable> NETWORK_ERRORS = new HashMap<>();
+    private static final Map<String, Throwable> NETWORK_ERRORS = new HashMap<>();
 
     private static final Set<OnlineResource> OFFLINE_RESOURCES = EnumSet.noneOf(OnlineResource.class);
 
@@ -497,11 +493,15 @@ public abstract class Main {
      * Constructs new {@code Main} object.
      * @see #initialize()
      */
-    public Main() {
-        main = this;
+    protected Main() {
+        setInstance(this);
         mainPanel.addMapFrameListener((o, n) -> redoUndoListener.commandChanged(0, 0));
     }
 
+    private static void setInstance(Main instance) {
+        main = instance;
+    }
+
     /**
      * Initializes the main object. A lot of global variables are initialized here.
      * @since 10340
@@ -522,7 +522,13 @@ public abstract class Main {
                 KeyEvent.VK_F1, Shortcut.DIRECT));
 
         // This needs to be done before RightAndLefthandTraffic::initialize is called
-        new InitializationTask(tr("Initializing internal boundaries data"), Territories::initialize).call();
+        try {
+            new InitializationTask(tr("Initializing internal boundaries data"), Territories::initialize).call();
+        } catch (JosmRuntimeException e) {
+            // Can happen if the current projection needs NTV2 grid which is not available
+            // In this case we want the user be able to change his projection
+            BugReport.intercept(e).warn();
+        }
 
         // contains several initialization tasks to be executed (in parallel) by a ExecutorService
         List<Callable<Void>> tasks = new ArrayList<>();
@@ -759,7 +765,7 @@ public abstract class Main {
         ProjectionPreference.setProjection();
 
         String defaultlaf = platform.getDefaultStyle();
-        String laf = Main.pref.get("laf", defaultlaf);
+        String laf = LafPreference.LAF.get();
         try {
             UIManager.setLookAndFeel(laf);
         } catch (final NoClassDefFoundError | ClassNotFoundException e) {
@@ -781,16 +787,16 @@ public abstract class Main {
                     warn(ex, "Cannot set Look and Feel: " + laf + ": "+ex.getMessage());
                 } catch (UnsupportedLookAndFeelException ex) {
                     info("Look and Feel not supported: " + laf);
-                    Main.pref.put("laf", defaultlaf);
+                    LafPreference.LAF.put(defaultlaf);
                     trace(ex);
                 }
             } else {
                 info("Look and Feel not found: " + laf);
-                Main.pref.put("laf", defaultlaf);
+                LafPreference.LAF.put(defaultlaf);
             }
         } catch (UnsupportedLookAndFeelException e) {
             info("Look and Feel not supported: " + laf);
-            Main.pref.put("laf", defaultlaf);
+            LafPreference.LAF.put(defaultlaf);
             trace(e);
         } catch (InstantiationException | IllegalAccessException e) {
             error(e);
@@ -1376,15 +1382,6 @@ public abstract class Main {
     }
 
     /**
-     * Returns the command-line arguments used to run the application.
-     * @return the command-line arguments used to run the application
-     * @since 8356
-     */
-    public static List<String> getCommandLineArgs() {
-        return Collections.unmodifiableList(COMMAND_LINE_ARGS);
-    }
-
-    /**
      * Returns the JOSM website URL.
      * @return the josm website URL
      * @since 6897
diff --git a/src/org/openstreetmap/josm/actions/AbstractInfoAction.java b/src/org/openstreetmap/josm/actions/AbstractInfoAction.java
index efa1019..98570ea 100644
--- a/src/org/openstreetmap/josm/actions/AbstractInfoAction.java
+++ b/src/org/openstreetmap/josm/actions/AbstractInfoAction.java
@@ -69,7 +69,6 @@ public abstract class AbstractInfoAction extends JosmAction {
                 "You are about to launch {0} browser windows.<br>"
                         + "This may both clutter your screen with browser windows<br>"
                         + "and take some time to finish.", numBrowsers, numBrowsers);
-        msg = "<html>" + msg + "</html>";
         ButtonSpec[] spec = new ButtonSpec[] {
                 new ButtonSpec(
                         tr("Continue"),
@@ -87,7 +86,7 @@ public abstract class AbstractInfoAction extends JosmAction {
         };
         return 0 == HelpAwareOptionPane.showOptionDialog(
                 Main.parent,
-                msg,
+                new StringBuilder(msg).insert(0, "<html>").append("</html>").toString(),
                 tr("Warning"),
                 JOptionPane.WARNING_MESSAGE,
                 null,
diff --git a/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java b/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java
index 06de836..8e45b4f 100644
--- a/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java
+++ b/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java
@@ -29,6 +29,7 @@ import org.openstreetmap.josm.data.imagery.WMTSTileSource;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.layer.AlignImageryPanel;
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
+import org.openstreetmap.josm.gui.preferences.ToolbarPreferences;
 import org.openstreetmap.josm.gui.preferences.imagery.WMSLayerTree;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.imagery.WMSImagery;
@@ -63,8 +64,8 @@ public class AddImageryLayerAction extends JosmAction implements AdaptableAction
      * @param info The imagery info
      */
     public AddImageryLayerAction(ImageryInfo info) {
-        super(info.getMenuName(), /* ICON */"imagery_menu", tr("Add imagery layer {0}", info.getName()), null, false, false);
-        putValue("toolbar", "imagery_" + info.getToolbarName());
+        super(info.getMenuName(), /* ICON */"imagery_menu", tr("Add imagery layer {0}", info.getName()), null,
+                true, ToolbarPreferences.IMAGERY_PREFIX + info.getToolbarName(), false);
         putValue("help", ht("/Preferences/Imagery"));
         setTooltip(info.getToolTipText().replaceAll("</?html>", ""));
         this.info = info;
@@ -202,4 +203,9 @@ public class AddImageryLayerAction extends JosmAction implements AdaptableAction
             setEnabled(true);
         }
     }
+
+    @Override
+    public String toString() {
+        return "AddImageryLayerAction [info=" + info + ']';
+    }
 }
diff --git a/src/org/openstreetmap/josm/actions/AutoScaleAction.java b/src/org/openstreetmap/josm/actions/AutoScaleAction.java
index f7605e6..98086fe 100644
--- a/src/org/openstreetmap/josm/actions/AutoScaleAction.java
+++ b/src/org/openstreetmap/josm/actions/AutoScaleAction.java
@@ -136,10 +136,10 @@ public class AutoScaleAction extends JosmAction {
     /**
      * Constructs a new {@code AutoScaleAction}.
      * @param mode The autoscale mode (one of {@link AutoScaleAction#MODES})
-     * @param marker Used only to differentiate from default constructor
+     * @param marker Must be set to false. Used only to differentiate from default constructor
      */
     private AutoScaleAction(String mode, boolean marker) {
-        super(false);
+        super(marker);
         this.mode = mode;
     }
 
@@ -230,22 +230,20 @@ public class AutoScaleAction extends JosmAction {
     }
 
     private BoundingXYVisitor getBoundingBox() {
-        BoundingXYVisitor v = "problem".equals(mode) ? new ValidatorBoundingXYVisitor() : new BoundingXYVisitor();
-
         switch (mode) {
         case "problem":
-            return modeProblem((ValidatorBoundingXYVisitor) v);
+            return modeProblem(new ValidatorBoundingXYVisitor());
         case "data":
-            return modeData(v);
+            return modeData(new BoundingXYVisitor());
         case "layer":
-            return modeLayer(v);
+            return modeLayer(new BoundingXYVisitor());
         case "selection":
         case "conflict":
-            return modeSelectionOrConflict(v);
+            return modeSelectionOrConflict(new BoundingXYVisitor());
         case "download":
-            return modeDownload(v);
+            return modeDownload(new BoundingXYVisitor());
         default:
-            return v;
+            return new BoundingXYVisitor();
         }
     }
 
diff --git a/src/org/openstreetmap/josm/actions/DialogsToggleAction.java b/src/org/openstreetmap/josm/actions/DialogsToggleAction.java
index ca61584..36ff632 100644
--- a/src/org/openstreetmap/josm/actions/DialogsToggleAction.java
+++ b/src/org/openstreetmap/josm/actions/DialogsToggleAction.java
@@ -29,7 +29,7 @@ public class DialogsToggleAction extends ToggleAction {
               true, "dialogspanel", /* register in toolbar */
               false
         );
-        putValue("help", ht("/Action/ToggleDialogsPanel"));
+        putValue("help", ht("/ToggleDialogs"));
         setSelected(Main.pref.getBoolean("draw.dialogspanel", true));
         notifySelectedState();
     }
diff --git a/src/org/openstreetmap/josm/actions/DownloadAction.java b/src/org/openstreetmap/josm/actions/DownloadAction.java
index 6295d65..54511ff 100644
--- a/src/org/openstreetmap/josm/actions/DownloadAction.java
+++ b/src/org/openstreetmap/josm/actions/DownloadAction.java
@@ -6,15 +6,23 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.downloadtasks.AbstractDownloadTask;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadGpsTask;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadNotesTask;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask;
 import org.openstreetmap.josm.actions.downloadtasks.PostDownloadHandler;
 import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.data.ProjectionBounds;
+import org.openstreetmap.josm.data.ViewportData;
 import org.openstreetmap.josm.gui.download.DownloadDialog;
+import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.tools.Pair;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -44,21 +52,59 @@ public class DownloadAction extends JosmAction {
         dialog.setVisible(true);
         if (!dialog.isCanceled()) {
             dialog.rememberSettings();
-            Bounds area = dialog.getSelectedDownloadArea();
+            final Bounds area = dialog.getSelectedDownloadArea();
+            final boolean zoom = dialog.isZoomToDownloadedDataRequired();
+            final List<Pair<AbstractDownloadTask<?>, Future<?>>> tasks = new ArrayList<>();
             if (dialog.isDownloadOsmData()) {
                 DownloadOsmTask task = new DownloadOsmTask();
+                task.setZoomAfterDownload(zoom && !dialog.isDownloadGpxData() && !dialog.isDownloadNotes());
                 Future<?> future = task.download(dialog.isNewLayerRequired(), area, null);
                 Main.worker.submit(new PostDownloadHandler(task, future));
+                if (zoom) {
+                    tasks.add(new Pair<>(task, future));
+                }
             }
             if (dialog.isDownloadGpxData()) {
                 DownloadGpsTask task = new DownloadGpsTask();
+                task.setZoomAfterDownload(zoom && !dialog.isDownloadOsmData() && !dialog.isDownloadNotes());
                 Future<?> future = task.download(dialog.isNewLayerRequired(), area, null);
                 Main.worker.submit(new PostDownloadHandler(task, future));
+                if (zoom) {
+                    tasks.add(new Pair<>(task, future));
+                }
             }
             if (dialog.isDownloadNotes()) {
                 DownloadNotesTask task = new DownloadNotesTask();
+                task.setZoomAfterDownload(zoom && !dialog.isDownloadOsmData() && !dialog.isDownloadGpxData());
                 Future<?> future = task.download(false, area, null);
                 Main.worker.submit(new PostDownloadHandler(task, future));
+                if (zoom) {
+                    tasks.add(new Pair<>(task, future));
+                }
+            }
+            if (zoom && tasks.size() > 1) {
+                Main.worker.submit(() -> {
+                    ProjectionBounds bounds = null;
+                    // Wait for completion of download jobs
+                    for (Pair<AbstractDownloadTask<?>, Future<?>> p : tasks) {
+                        try {
+                            p.b.get();
+                            ProjectionBounds b = p.a.getDownloadProjectionBounds();
+                            if (bounds == null) {
+                                bounds = b;
+                            } else if (b != null) {
+                                bounds.extend(b);
+                            }
+                        } catch (InterruptedException | ExecutionException ex) {
+                            Main.warn(ex);
+                        }
+                    }
+                    // Zoom to the larger download bounds
+                    if (Main.map != null && bounds != null) {
+                        final ProjectionBounds pb = bounds;
+                        GuiHelper.runInEDTAndWait(() -> Main.map.mapView.zoomTo(new ViewportData(pb)));
+                    }
+                });
             }
         }
     }
diff --git a/src/org/openstreetmap/josm/actions/DownloadNotesInViewAction.java b/src/org/openstreetmap/josm/actions/DownloadNotesInViewAction.java
index 65c9e3b..28cff41 100644
--- a/src/org/openstreetmap/josm/actions/DownloadNotesInViewAction.java
+++ b/src/org/openstreetmap/josm/actions/DownloadNotesInViewAction.java
@@ -24,10 +24,18 @@ public final class DownloadNotesInViewAction extends JosmAction {
                 "dialogs/notes/download_in_view", true);
     }
 
+    /**
+     * Constructs a new {@code DownloadNotesInViewAction} with note icon.
+     * @return a new {@code DownloadNotesInViewAction} with note icon
+     */
     public static DownloadNotesInViewAction newActionWithNoteIcon() {
         return new DownloadNotesInViewAction("dialogs/notes/note_open");
     }
 
+    /**
+     * Constructs a new {@code DownloadNotesInViewAction} with download icon.
+     * @return a new {@code DownloadNotesInViewAction} with download icon
+     */
     public static DownloadNotesInViewAction newActionWithDownloadIcon() {
         return new DownloadNotesInViewAction("download");
     }
@@ -36,6 +44,7 @@ public final class DownloadNotesInViewAction extends JosmAction {
     public void actionPerformed(ActionEvent e) {
         final Bounds bounds = Main.map.mapView.getRealBounds();
         DownloadNotesTask task = new DownloadNotesTask();
+        task.setZoomAfterDownload(false);
         Future<?> future = task.download(false, bounds, null);
         Main.worker.submit(new PostDownloadHandler(task, future));
     }
diff --git a/src/org/openstreetmap/josm/actions/DownloadOsmInViewAction.java b/src/org/openstreetmap/josm/actions/DownloadOsmInViewAction.java
index 2ab75b1..210052a 100644
--- a/src/org/openstreetmap/josm/actions/DownloadOsmInViewAction.java
+++ b/src/org/openstreetmap/josm/actions/DownloadOsmInViewAction.java
@@ -32,6 +32,7 @@ public final class DownloadOsmInViewAction extends JosmAction {
     public void actionPerformed(ActionEvent e) {
         final Bounds bounds = Main.map.mapView.getRealBounds();
         DownloadOsmInViewTask task = new DownloadOsmInViewTask();
+        task.setZoomAfterDownload(false);
         Future<?> future = task.download(bounds);
         Main.worker.submit(new PostDownloadHandler(task, future));
     }
diff --git a/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java b/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java
index b33a5a0..26d5b7a 100644
--- a/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java
+++ b/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java
@@ -52,9 +52,7 @@ public class ImageryAdjustAction extends MapMode implements AWTEventListener {
      * @param layer The imagery layer
      */
     public ImageryAdjustAction(AbstractTileSourceLayer<?> layer) {
-        super(tr("New offset"), "adjustimg",
-                tr("Adjust the position of this imagery layer"), Main.map,
-                cursor);
+        super(tr("New offset"), "adjustimg", tr("Adjust the position of this imagery layer"), cursor);
         putValue("toolbar", Boolean.FALSE);
         this.layer = layer;
     }
@@ -69,10 +67,19 @@ public class ImageryAdjustAction extends MapMode implements AWTEventListener {
         }
         old = layer.getDisplaySettings().getDisplacement();
         addListeners();
-        offsetDialog = new ImageryOffsetDialog();
+        showOffsetDialog(new ImageryOffsetDialog());
+    }
+
+    private static void showOffsetDialog(ImageryOffsetDialog dlg) {
+        offsetDialog = dlg;
         offsetDialog.setVisible(true);
     }
 
+    private static void hideOffsetDialog() {
+        offsetDialog.setVisible(false);
+        offsetDialog = null;
+    }
+
     protected void addListeners() {
         Main.map.mapView.addMouseListener(this);
         Main.map.mapView.addMouseMotionListener(this);
@@ -90,9 +97,8 @@ public class ImageryAdjustAction extends MapMode implements AWTEventListener {
             if (layer != null) {
                 layer.getDisplaySettings().setDisplacement(old);
             }
-            offsetDialog.setVisible(false);
+            hideOffsetDialog();
             // do not restore old mode here - this is called when the new mode is already known.
-            offsetDialog = null;
         }
         removeListeners();
     }
diff --git a/src/org/openstreetmap/josm/actions/LassoModeAction.java b/src/org/openstreetmap/josm/actions/LassoModeAction.java
index 893cdfd..beb3c49 100644
--- a/src/org/openstreetmap/josm/actions/LassoModeAction.java
+++ b/src/org/openstreetmap/josm/actions/LassoModeAction.java
@@ -21,7 +21,6 @@ public class LassoModeAction extends MapMode {
         super(tr("Lasso Mode"),
                 /* ICON(mapmode/) */ "rope",
                 tr("Lasso selection mode: select objects within a hand-drawn region"),
-                null,
                 ImageProvider.getCursor("normal", "rope"));
     }
 
diff --git a/src/org/openstreetmap/josm/actions/MergeLayerAction.java b/src/org/openstreetmap/josm/actions/MergeLayerAction.java
index fe7e6d0..5dc9e6e 100644
--- a/src/org/openstreetmap/josm/actions/MergeLayerAction.java
+++ b/src/org/openstreetmap/josm/actions/MergeLayerAction.java
@@ -41,7 +41,7 @@ public class MergeLayerAction extends AbstractMergeAction {
         final Layer targetLayer = askTargetLayer(targetLayers);
         if (targetLayer == null)
             return;
-        final Object actionName = MergeLayerAction.this.getValue(NAME);
+        final Object actionName = getValue(NAME);
         Main.worker.submit(() -> {
                 final long start = System.currentTimeMillis();
                 boolean layerMerged = false;
@@ -100,8 +100,13 @@ public class MergeLayerAction extends AbstractMergeAction {
                 if (sourceLayer == null) {
                     setEnabled(false);
                 } else {
-                    final List<Layer> possibleMergeTargets = LayerListDialog.getInstance().getModel().getPossibleMergeTargets(sourceLayer);
-                    setEnabled(!possibleMergeTargets.isEmpty());
+                    try {
+                        setEnabled(!LayerListDialog.getInstance().getModel().getPossibleMergeTargets(sourceLayer).isEmpty());
+                    } catch (IllegalStateException e) {
+                        // May occur when destroying last layer / exiting JOSM, see #14476
+                        setEnabled(false);
+                        Main.error(e);
+                    }
                 }
         });
     }
diff --git a/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java b/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java
index 8b5c9cd..f6416e2 100644
--- a/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java
+++ b/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java
@@ -80,6 +80,7 @@ public class OverpassDownloadAction extends JosmAction {
             dialog.rememberSettings();
             Bounds area = dialog.getSelectedDownloadArea();
             DownloadOsmTask task = new DownloadOsmTask();
+            task.setZoomAfterDownload(dialog.isZoomToDownloadedDataRequired());
             Future<?> future = task.download(
                     new OverpassDownloadReader(area, OverpassServerPreference.getOverpassServer(), dialog.getOverpassQuery()),
                     dialog.isNewLayerRequired(), area, null);
diff --git a/src/org/openstreetmap/josm/actions/RestartAction.java b/src/org/openstreetmap/josm/actions/RestartAction.java
index 6d7c9e4..3a4b54f 100644
--- a/src/org/openstreetmap/josm/actions/RestartAction.java
+++ b/src/org/openstreetmap/josm/actions/RestartAction.java
@@ -16,6 +16,7 @@ import java.util.List;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.io.SaveLayersDialog;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -164,7 +165,7 @@ public class RestartAction extends JosmAction {
             }
         }
         // finally add program arguments
-        cmd.addAll(Main.getCommandLineArgs());
+        cmd.addAll(MainApplication.getCommandLineArgs());
         return cmd;
     }
 
diff --git a/src/org/openstreetmap/josm/actions/SessionLoadAction.java b/src/org/openstreetmap/josm/actions/SessionLoadAction.java
index 983da92..1f9c652 100644
--- a/src/org/openstreetmap/josm/actions/SessionLoadAction.java
+++ b/src/org/openstreetmap/josm/actions/SessionLoadAction.java
@@ -30,6 +30,7 @@ import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.io.session.SessionImporter;
 import org.openstreetmap.josm.io.session.SessionReader;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -137,13 +138,15 @@ public class SessionLoadAction extends DiskAccessAction {
         }
 
         private void runPostLoadTasks() {
-            for (Runnable task : postLoadTasks) {
-                if (canceled)
-                    return;
-                if (task == null) {
-                    continue;
+            if (postLoadTasks != null) {
+                for (Runnable task : postLoadTasks) {
+                    if (canceled)
+                        return;
+                    if (task == null) {
+                        continue;
+                    }
+                    task.run();
                 }
-                task.run();
             }
         }
 
@@ -175,7 +178,7 @@ public class SessionLoadAction extends DiskAccessAction {
                 handleException(tr("Data Error"), e);
             } catch (IOException e) {
                 handleException(tr("IO Error"), e);
-            } catch (RuntimeException e) {
+            } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
                 cancel();
                 throw e;
             }
diff --git a/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java b/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java
index 30ab4bd..3d70f74 100644
--- a/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java
+++ b/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java
@@ -28,6 +28,7 @@ import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.DatasetConsistencyTest;
 import org.openstreetmap.josm.data.preferences.Setting;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.preferences.SourceEditor;
 import org.openstreetmap.josm.gui.preferences.map.MapPaintPreference;
 import org.openstreetmap.josm.gui.preferences.map.TaggingPresetPreference;
@@ -165,7 +166,7 @@ public final class ShowStatusReportAction extends JosmAction {
         } catch (SecurityException e) {
             Main.trace(e);
         }
-        List<String> commandLineArgs = Main.getCommandLineArgs();
+        List<String> commandLineArgs = MainApplication.getCommandLineArgs();
         if (!commandLineArgs.isEmpty()) {
             text.append("Program arguments: ").append(Arrays.toString(paramCleanup(commandLineArgs).toArray())).append('\n');
         }
@@ -267,22 +268,18 @@ public final class ShowStatusReportAction extends JosmAction {
         StringBuilder text = new StringBuilder();
         String reportHeader = getReportHeader();
         text.append(reportHeader);
-        try {
-            Map<String, Setting<?>> settings = Main.pref.getAllSettings();
-            Set<String> keys = new HashSet<>(settings.keySet());
-            for (String key : keys) {
-                // Remove sensitive information from status report
-                if (key.startsWith("marker.show") || key.contains("username") || key.contains("password") || key.contains("access-token")) {
-                    settings.remove(key);
-                }
+        Map<String, Setting<?>> settings = Main.pref.getAllSettings();
+        Set<String> keys = new HashSet<>(settings.keySet());
+        for (String key : keys) {
+            // Remove sensitive information from status report
+            if (key.startsWith("marker.show") || key.contains("username") || key.contains("password") || key.contains("access-token")) {
+                settings.remove(key);
             }
-            for (Entry<String, Setting<?>> entry : settings.entrySet()) {
-                text.append(paramCleanup(entry.getKey()))
-                    .append('=')
-                    .append(paramCleanup(entry.getValue().getValue().toString())).append('\n');
-            }
-        } catch (Exception ex) {
-            Main.error(ex);
+        }
+        for (Entry<String, Setting<?>> entry : settings.entrySet()) {
+            text.append(paramCleanup(entry.getKey()))
+                .append('=')
+                .append(paramCleanup(entry.getValue().getValue().toString())).append('\n');
         }
 
         DebugTextDisplay ta = new DebugTextDisplay(text.toString());
diff --git a/src/org/openstreetmap/josm/actions/SplitWayAction.java b/src/org/openstreetmap/josm/actions/SplitWayAction.java
index 2d70da9..0f14111 100644
--- a/src/org/openstreetmap/josm/actions/SplitWayAction.java
+++ b/src/org/openstreetmap/josm/actions/SplitWayAction.java
@@ -213,7 +213,9 @@ public class SplitWayAction extends JosmAction {
             if (wayToKeep != null) {
                 final SplitWayResult result = doSplitWay(getLayerManager().getEditLayer(), selectedWay, wayToKeep, newWays, sel);
                 Main.main.undoRedo.add(result.getCommand());
-                getLayerManager().getEditDataSet().setSelected(result.getNewSelection());
+                if (!result.getNewSelection().isEmpty()) {
+                    getLayerManager().getEditDataSet().setSelected(result.getNewSelection());
+                }
             }
         }
     }
@@ -292,7 +294,9 @@ public class SplitWayAction extends JosmAction {
                 SplitWayResult result = doSplitWay(Main.getLayerManager().getEditLayer(),
                         selectedWay, list.getSelectedValue(), newWays, selection);
                 Main.main.undoRedo.add(result.getCommand());
-                Main.getLayerManager().getEditDataSet().setSelected(result.getNewSelection());
+                if (!result.getNewSelection().isEmpty()) {
+                    Main.getLayerManager().getEditDataSet().setSelected(result.getNewSelection());
+                }
             }
         }
     }
@@ -538,17 +542,21 @@ public class SplitWayAction extends JosmAction {
         Collection<String> nowarnroles = Main.pref.getCollection("way.split.roles.nowarn",
                 Arrays.asList("outer", "inner", "forward", "backward", "north", "south", "east", "west"));
 
+        final boolean isMapModeDraw = Main.map != null && Main.map.mapMode == Main.map.mapModeDraw;
+
         // Change the original way
         final Way changedWay = new Way(way);
         changedWay.setNodes(wayToKeep.getNodes());
         commandList.add(layer != null ? new ChangeCommand(layer, way, changedWay) : new ChangeCommand(way.getDataSet(), way, changedWay));
-        if (!newSelection.contains(way)) {
+        if (!isMapModeDraw && !newSelection.contains(way)) {
             newSelection.add(way);
         }
         final int indexOfWayToKeep = newWays.indexOf(wayToKeep);
         newWays.remove(wayToKeep);
 
-        newSelection.addAll(newWays);
+        if (!isMapModeDraw) {
+            newSelection.addAll(newWays);
+        }
         for (Way wayToAdd : newWays) {
             commandList.add(layer != null ? new AddCommand(layer, wayToAdd) : new AddCommand(way.getDataSet(), wayToAdd));
         }
diff --git a/src/org/openstreetmap/josm/actions/ToggleUploadDiscouragedLayerAction.java b/src/org/openstreetmap/josm/actions/ToggleUploadDiscouragedLayerAction.java
index 5b72438..2d6d752 100644
--- a/src/org/openstreetmap/josm/actions/ToggleUploadDiscouragedLayerAction.java
+++ b/src/org/openstreetmap/josm/actions/ToggleUploadDiscouragedLayerAction.java
@@ -3,11 +3,16 @@ package org.openstreetmap.josm.actions;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.Component;
 import java.awt.event.ActionEvent;
+import java.util.List;
 
 import javax.swing.AbstractAction;
+import javax.swing.JCheckBoxMenuItem;
 
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
+import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.Layer.LayerAction;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.ImageProvider;
 
@@ -15,7 +20,7 @@ import org.openstreetmap.josm.tools.ImageProvider;
  * An action enabling/disabling the {@linkplain OsmDataLayer#setUploadDiscouraged(boolean) discouraged upload flag}
  * of the layer specified in the constructor.
  */
-public class ToggleUploadDiscouragedLayerAction extends AbstractAction {
+public class ToggleUploadDiscouragedLayerAction extends AbstractAction implements LayerAction {
 
     private final transient OsmDataLayer layer;
 
@@ -24,8 +29,9 @@ public class ToggleUploadDiscouragedLayerAction extends AbstractAction {
      * @param layer the layer for which to toggle the {@linkplain OsmDataLayer#setUploadDiscouraged(boolean) discouraged upload flag}
      */
     public ToggleUploadDiscouragedLayerAction(OsmDataLayer layer) {
-        super(tr("Encourage/discourage upload"), ImageProvider.get("no_upload"));
+        super(tr("Discourage upload"), ImageProvider.get("no_upload"));
         this.layer = layer;
+        setEnabled(layer.isUploadable());
     }
 
     @Override
@@ -33,4 +39,16 @@ public class ToggleUploadDiscouragedLayerAction extends AbstractAction {
         layer.setUploadDiscouraged(!layer.isUploadDiscouraged());
         LayerListDialog.getInstance().repaint();
     }
+
+    @Override
+    public Component createMenuComponent() {
+        JCheckBoxMenuItem item = new JCheckBoxMenuItem(this);
+        item.setSelected(layer.isUploadDiscouraged() || !layer.isUploadable());
+        return item;
+    }
+
+    @Override
+    public boolean supportLayers(List<Layer> layers) {
+        return layers.size() == 1 && layers.get(0) instanceof OsmDataLayer;
+    }
 }
diff --git a/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java b/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java
index e73865b..7ddd1bc 100644
--- a/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java
+++ b/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java
@@ -72,7 +72,7 @@ public class UpdateSelectionAction extends JosmAction {
      */
     public static void updatePrimitive(PrimitiveId id) {
         ensureParameterNotNull(id, "id");
-        updatePrimitives(Collections.singleton(Optional.ofNullable(Optional.ofNullable(
+        updatePrimitives(Collections.<OsmPrimitive>singleton(Optional.ofNullable(Optional.ofNullable(
                 Main.getLayerManager().getEditLayer()).orElseThrow(
                         () -> new IllegalStateException(tr("No current dataset found")))
                 .data.getPrimitiveById(id)).orElseThrow(
diff --git a/src/org/openstreetmap/josm/actions/UploadAction.java b/src/org/openstreetmap/josm/actions/UploadAction.java
index 4d4cc77..60e93cc 100644
--- a/src/org/openstreetmap/josm/actions/UploadAction.java
+++ b/src/org/openstreetmap/josm/actions/UploadAction.java
@@ -140,7 +140,8 @@ public class UploadAction extends JosmAction {
      */
     @Override
     protected void updateEnabledState() {
-        setEnabled(getLayerManager().getEditLayer() != null);
+        OsmDataLayer editLayer = getLayerManager().getEditLayer();
+        setEnabled(editLayer != null && editLayer.isUploadable());
     }
 
     public static boolean checkPreUploadConditions(AbstractModifiableLayer layer) {
diff --git a/src/org/openstreetmap/josm/actions/audio/AudioBackAction.java b/src/org/openstreetmap/josm/actions/audio/AudioBackAction.java
index 7cd1cce..6a21035 100644
--- a/src/org/openstreetmap/josm/actions/audio/AudioBackAction.java
+++ b/src/org/openstreetmap/josm/actions/audio/AudioBackAction.java
@@ -7,6 +7,7 @@ import static org.openstreetmap.josm.tools.I18n.trc;
 
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
+import java.io.IOException;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
@@ -37,7 +38,7 @@ public class AudioBackAction extends JosmAction {
                 - Main.pref.getDouble("audio.forwardbackamount", 10.0));
             else
                 MarkerLayer.playAudio();
-        } catch (Exception ex) {
+        } catch (IOException | InterruptedException ex) {
             AudioPlayer.audioMalfunction(ex);
         }
     }
diff --git a/src/org/openstreetmap/josm/actions/audio/AudioFastSlowAction.java b/src/org/openstreetmap/josm/actions/audio/AudioFastSlowAction.java
index 124255f..c34f6d9 100644
--- a/src/org/openstreetmap/josm/actions/audio/AudioFastSlowAction.java
+++ b/src/org/openstreetmap/josm/actions/audio/AudioFastSlowAction.java
@@ -2,6 +2,7 @@
 package org.openstreetmap.josm.actions.audio;
 
 import java.awt.event.ActionEvent;
+import java.io.IOException;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
@@ -40,7 +41,7 @@ public abstract class AudioFastSlowAction extends JosmAction {
         try {
             if (AudioPlayer.playing() || AudioPlayer.paused())
                 AudioPlayer.play(AudioPlayer.url(), AudioPlayer.position(), speed * multiplier);
-        } catch (Exception ex) {
+        } catch (IOException | InterruptedException ex) {
             AudioPlayer.audioMalfunction(ex);
         }
     }
diff --git a/src/org/openstreetmap/josm/actions/audio/AudioFwdAction.java b/src/org/openstreetmap/josm/actions/audio/AudioFwdAction.java
index 7e33a24..2829584 100644
--- a/src/org/openstreetmap/josm/actions/audio/AudioFwdAction.java
+++ b/src/org/openstreetmap/josm/actions/audio/AudioFwdAction.java
@@ -6,6 +6,7 @@ import static org.openstreetmap.josm.tools.I18n.trc;
 
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
+import java.io.IOException;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
@@ -35,7 +36,7 @@ public class AudioFwdAction extends JosmAction {
                 + Main.pref.getDouble("audio.forwardbackamount", 10.0));
             else
                 MarkerLayer.playAudio();
-        } catch (Exception ex) {
+        } catch (IOException | InterruptedException ex) {
             AudioPlayer.audioMalfunction(ex);
         }
     }
diff --git a/src/org/openstreetmap/josm/actions/audio/AudioPlayPauseAction.java b/src/org/openstreetmap/josm/actions/audio/AudioPlayPauseAction.java
index e41f1c0..430f436 100644
--- a/src/org/openstreetmap/josm/actions/audio/AudioPlayPauseAction.java
+++ b/src/org/openstreetmap/josm/actions/audio/AudioPlayPauseAction.java
@@ -6,6 +6,7 @@ import static org.openstreetmap.josm.tools.I18n.trc;
 
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
+import java.io.IOException;
 import java.net.URL;
 
 import org.openstreetmap.josm.actions.JosmAction;
@@ -52,7 +53,7 @@ public class AudioPlayPauseAction extends JosmAction {
                     MarkerLayer.playAudio();
                 }
             }
-        } catch (Exception ex) {
+        } catch (IOException | InterruptedException ex) {
             AudioPlayer.audioMalfunction(ex);
         }
     }
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/AbstractDownloadTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/AbstractDownloadTask.java
index bc42cc6..ec768c4 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/AbstractDownloadTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/AbstractDownloadTask.java
@@ -4,6 +4,7 @@ package org.openstreetmap.josm.actions.downloadtasks;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.openstreetmap.josm.data.ProjectionBounds;
 import org.openstreetmap.josm.io.XmlWriter;
 
 /**
@@ -16,6 +17,7 @@ public abstract class AbstractDownloadTask<T> implements DownloadTask {
     private boolean canceled;
     private boolean failed;
     protected T downloadedData;
+    protected boolean zoomAfterDownload = true;
 
     /**
      * Constructs a new {@code AbstractDownloadTask}.
@@ -76,6 +78,15 @@ public abstract class AbstractDownloadTask<T> implements DownloadTask {
         return downloadedData;
     }
 
+    /**
+     * Sets whether the map view will zoom to download area after download
+     * @param zoomAfterDownload if true, the map view will zoom to download area after download
+     * @since 11658
+     */
+    public final void setZoomAfterDownload(boolean zoomAfterDownload) {
+        this.zoomAfterDownload = zoomAfterDownload;
+    }
+
     @Override
     public List<Object> getErrorObjects() {
         return errorMessages;
@@ -159,4 +170,13 @@ public abstract class AbstractDownloadTask<T> implements DownloadTask {
     public String[] getPatterns() {
         return new String[]{};
     }
+
+    /**
+     * Returns the projection bounds of downloaded data.
+     * @return the projection bounds of downloaded data or {@code null}
+     * @since 11774
+     */
+    public ProjectionBounds getDownloadProjectionBounds() {
+        return null;
+    }
 }
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java
index 28362a8..943554c 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java
@@ -14,6 +14,7 @@ import java.util.stream.Stream;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.Bounds.ParseMethod;
+import org.openstreetmap.josm.data.ProjectionBounds;
 import org.openstreetmap.josm.data.ViewportData;
 import org.openstreetmap.josm.data.gpx.GpxData;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
@@ -38,6 +39,7 @@ import org.xml.sax.SAXException;
 public class DownloadGpsTask extends AbstractDownloadTask<GpxData> {
 
     private DownloadTask downloadTask;
+    private GpxLayer gpxLayer;
 
     private static final String PATTERN_TRACE_ID = "https?://.*(osm|openstreetmap).org/trace/\\p{Digit}+/data";
     private static final String PATTERN_USER_TRACE_ID = "https?://.*(osm|openstreetmap).org/user/[^/]+/traces/(\\p{Digit}+)";
@@ -113,6 +115,11 @@ public class DownloadGpsTask extends AbstractDownloadTask<GpxData> {
         }
     }
 
+    @Override
+    public ProjectionBounds getDownloadProjectionBounds() {
+        return gpxLayer != null ? gpxLayer.getViewProjectionBounds() : null;
+    }
+
     class DownloadTask extends PleaseWaitRunnable {
         private final OsmServerReader reader;
         private GpxData rawData;
@@ -129,8 +136,7 @@ public class DownloadGpsTask extends AbstractDownloadTask<GpxData> {
             try {
                 if (isCanceled())
                     return;
-                ProgressMonitor subMonitor = progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false);
-                rawData = reader.parseRawGps(subMonitor);
+                rawData = reader.parseRawGps(progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false));
             } catch (OsmTransferException e) {
                 if (isCanceled())
                     return;
@@ -148,7 +154,8 @@ public class DownloadGpsTask extends AbstractDownloadTask<GpxData> {
             GpxImporterData layers = GpxImporter.loadLayers(rawData, reader.isGpxParsedProperly(), name,
                     tr("Markers from {0}", name));
 
-            GpxLayer gpxLayer = addOrMergeLayer(layers.getGpxLayer(), findGpxMergeLayer());
+            gpxLayer = layers.getGpxLayer();
+            addOrMergeLayer(gpxLayer, findGpxMergeLayer());
             addOrMergeLayer(layers.getMarkerLayer(), findMarkerMergeLayer(gpxLayer));
 
             layers.getPostLayerTask().run();
@@ -157,12 +164,12 @@ public class DownloadGpsTask extends AbstractDownloadTask<GpxData> {
         private <L extends Layer> L addOrMergeLayer(L layer, L mergeLayer) {
             if (layer == null) return null;
             if (newLayer || mergeLayer == null) {
-                Main.getLayerManager().addLayer(layer);
+                Main.getLayerManager().addLayer(layer, zoomAfterDownload);
                 return layer;
             } else {
                 mergeLayer.mergeFrom(layer);
                 mergeLayer.invalidate();
-                if (Main.map != null) {
+                if (Main.map != null && zoomAfterDownload && layer instanceof GpxLayer) {
                     Main.map.mapView.scheduleZoomTo(new ViewportData(layer.getViewProjectionBounds()));
                 }
                 return mergeLayer;
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTask.java
index 40096b5..d27c869 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTask.java
@@ -13,6 +13,8 @@ import javax.swing.JOptionPane;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.data.ProjectionBounds;
+import org.openstreetmap.josm.data.ViewportData;
 import org.openstreetmap.josm.data.notes.Note;
 import org.openstreetmap.josm.data.osm.NoteData;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
@@ -38,6 +40,7 @@ public class DownloadNotesTask extends AbstractDownloadTask<NoteData> {
     public static final IntegerProperty DAYS_CLOSED = new IntegerProperty("osm.notes.daysClosed", 7);
 
     private DownloadTask downloadTask;
+    private NoteLayer noteLayer;
 
     /**
      * Download a specific note by its id.
@@ -94,6 +97,11 @@ public class DownloadNotesTask extends AbstractDownloadTask<NoteData> {
         return true;
     }
 
+    @Override
+    public ProjectionBounds getDownloadProjectionBounds() {
+        return noteLayer != null ? noteLayer.getViewProjectionBounds() : null;
+    }
+
     abstract class DownloadTask extends PleaseWaitRunnable {
         protected OsmServerReader reader;
         protected List<Note> notesData;
@@ -113,11 +121,15 @@ public class DownloadNotesTask extends AbstractDownloadTask<NoteData> {
                 Main.debug("Notes downloaded: " + notesData.size());
             }
 
+            noteLayer = new NoteLayer(notesData, tr("Notes"));
             List<NoteLayer> noteLayers = Main.getLayerManager().getLayersOfType(NoteLayer.class);
             if (!noteLayers.isEmpty()) {
                 noteLayers.get(0).getNoteData().addNotes(notesData);
+                if (Main.map != null && zoomAfterDownload) {
+                    Main.map.mapView.scheduleZoomTo(new ViewportData(noteLayer.getViewProjectionBounds()));
+                }
             } else {
-                Main.getLayerManager().addLayer(new NoteLayer(notesData, tr("Notes")));
+                Main.getLayerManager().addLayer(noteLayer, zoomAfterDownload);
             }
         }
 
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java
index 7c3d819..2fbd612 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java
@@ -10,6 +10,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.concurrent.Future;
+import java.util.concurrent.RejectedExecutionException;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -114,7 +115,7 @@ public class DownloadOsmChangeTask extends DownloadOsmTask {
                 if (isCanceled()) return;
                 // Let's load all required history
                 Main.worker.submit(new HistoryLoaderAndListener(toLoad));
-            } catch (Exception e) {
+            } catch (RejectedExecutionException e) {
                 rememberException(e);
                 setFailed(true);
             }
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
index 43efb17..9b2868a 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
@@ -7,7 +7,9 @@ import java.io.IOException;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Optional;
+import java.util.Set;
 import java.util.concurrent.Future;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -16,10 +18,15 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.DataSource;
 import org.openstreetmap.josm.data.ProjectionBounds;
+import org.openstreetmap.josm.data.ViewportData;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
+import org.openstreetmap.josm.gui.io.UpdatePrimitivesTask;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -114,7 +121,7 @@ public class DownloadOsmTask extends AbstractDownloadTask<DataSet> {
      * @return the future representing the asynchronous task
      */
     public Future<?> download(OsmServerReader reader, boolean newLayer, Bounds downloadArea, ProgressMonitor progressMonitor) {
-        return download(new DownloadTask(newLayer, reader, progressMonitor), downloadArea);
+        return download(new DownloadTask(newLayer, reader, progressMonitor, zoomAfterDownload), downloadArea);
     }
 
     protected Future<?> download(DownloadTask downloadTask, Bounds downloadArea) {
@@ -168,6 +175,11 @@ public class DownloadOsmTask extends AbstractDownloadTask<DataSet> {
         return true;
     }
 
+    @Override
+    public ProjectionBounds getDownloadProjectionBounds() {
+        return downloadTask != null ? downloadTask.computeBbox(currentBounds) : null;
+    }
+
     /**
      * Superclass of internal download task.
      * @since 7636
@@ -246,13 +258,6 @@ public class DownloadOsmTask extends AbstractDownloadTask<DataSet> {
             return v.getBounds();
         }
 
-        protected void computeBboxAndCenterScale(Bounds bounds) {
-            ProjectionBounds pb = computeBbox(bounds);
-            BoundingXYVisitor v = new BoundingXYVisitor();
-            v.visit(pb);
-            Main.map.mapView.zoomTo(v);
-        }
-
         protected OsmDataLayer addNewLayerIfRequired(String newLayerName) {
             int numDataLayers = getNumDataLayers();
             if (newLayer || numDataLayers == 0 || (numDataLayers > 1 && getEditLayer() == null)) {
@@ -261,7 +266,7 @@ public class DownloadOsmTask extends AbstractDownloadTask<DataSet> {
                 //
                 final OsmDataLayer layer = createNewLayer(newLayerName);
                 if (Main.main != null)
-                    Main.getLayerManager().addLayer(layer);
+                    Main.getLayerManager().addLayer(layer, zoomAfterDownload);
                 return layer;
             }
             return null;
@@ -271,13 +276,47 @@ public class DownloadOsmTask extends AbstractDownloadTask<DataSet> {
             OsmDataLayer layer = addNewLayerIfRequired(newLayerName);
             if (layer == null) {
                 layer = Optional.ofNullable(getEditLayer()).orElseGet(this::getFirstDataLayer);
+                Collection<OsmPrimitive> primitivesToUpdate = searchPrimitivesToUpdate(bounds, layer.data);
                 layer.mergeFrom(dataSet);
-                if (zoomAfterDownload) {
-                    computeBboxAndCenterScale(bounds);
+                if (Main.map != null && zoomAfterDownload) {
+                    Main.map.mapView.zoomTo(new ViewportData(computeBbox(bounds)));
+                }
+                if (!primitivesToUpdate.isEmpty()) {
+                    Main.worker.submit(new UpdatePrimitivesTask(layer, primitivesToUpdate));
                 }
                 layer.onPostDownloadFromServer();
             }
         }
+
+        /**
+         * Look for primitives deleted on server (thus absent from downloaded data)
+         * but still present in existing data layer
+         * @param b download bounds
+         * @param ds existing data set
+         * @return the primitives to update
+         */
+        private Collection<OsmPrimitive> searchPrimitivesToUpdate(Bounds b, DataSet ds) {
+            Collection<OsmPrimitive> col = new ArrayList<>();
+            ds.searchNodes(b.toBBox()).stream().filter(n -> !n.isNew() && !dataSet.containsNode(n)).forEachOrdered(col::add);
+            if (!col.isEmpty()) {
+                Set<Way> ways = new HashSet<>();
+                Set<Relation> rels = new HashSet<>();
+                for (OsmPrimitive n : col) {
+                    for (OsmPrimitive ref : n.getReferrers()) {
+                        if (ref.isNew()) {
+                            continue;
+                        } else if (ref instanceof Way) {
+                            ways.add((Way) ref);
+                        } else if (ref instanceof Relation) {
+                            rels.add((Relation) ref);
+                        }
+                    }
+                }
+                ways.stream().filter(w -> !dataSet.containsWay(w)).forEachOrdered(col::add);
+                rels.stream().filter(r -> !dataSet.containsRelation(r)).forEachOrdered(col::add);
+            }
+            return col;
+        }
     }
 
     protected class DownloadTask extends AbstractInternalTask {
diff --git a/src/org/openstreetmap/josm/actions/mapmode/AddNoteAction.java b/src/org/openstreetmap/josm/actions/mapmode/AddNoteAction.java
index 966f4d7..e6979a6 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/AddNoteAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/AddNoteAction.java
@@ -12,7 +12,6 @@ import javax.swing.SwingUtilities;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.NoteData;
-import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.NoteInputDialog;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.util.KeyPressReleaseListener;
@@ -29,13 +28,12 @@ public class AddNoteAction extends MapMode implements KeyPressReleaseListener {
 
     /**
      * Construct a new map mode.
-     * @param mapFrame Map frame to pass to the superconstructor
      * @param data Note data container. Must not be null
+     * @since 11713
      */
-    public AddNoteAction(MapFrame mapFrame, NoteData data) {
-        super(tr("Add a new Note"), "addnote",
-            tr("Add note mode"),
-            mapFrame, ImageProvider.getCursor("crosshair", "create_note"));
+    public AddNoteAction(NoteData data) {
+        super(tr("Add a new Note"), "addnote", tr("Add note mode"),
+            ImageProvider.getCursor("crosshair", "create_note"));
         CheckParameterUtil.ensureParameterNotNull(data, "data");
         noteData = data;
     }
diff --git a/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java b/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
index cabef66..aa0759e 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
@@ -21,7 +21,6 @@ import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.WaySegment;
-import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationDialogManager;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.MainLayerManager;
@@ -88,19 +87,19 @@ public class DeleteAction extends MapMode implements ModifierListener {
 
     /**
      * Construct a new DeleteAction. Mnemonic is the delete - key.
-     * @param mapFrame The frame this action belongs to.
+     * @since 11713
      */
-    public DeleteAction(MapFrame mapFrame) {
+    public DeleteAction() {
         super(tr("Delete Mode"),
                 "delete",
                 tr("Delete nodes or ways."),
                 Shortcut.registerShortcut("mapmode:delete", tr("Mode: {0}", tr("Delete")),
                 KeyEvent.VK_DELETE, Shortcut.CTRL),
-                mapFrame,
                 ImageProvider.getCursor("normal", "delete"));
     }
 
-    @Override public void enterMode() {
+    @Override
+    public void enterMode() {
         super.enterMode();
         if (!isEnabled())
             return;
diff --git a/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java b/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
index cabec0d..b939e7f 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
@@ -53,7 +53,6 @@ import org.openstreetmap.josm.data.preferences.ColorProperty;
 import org.openstreetmap.josm.data.preferences.DoubleProperty;
 import org.openstreetmap.josm.data.preferences.StrokeProperty;
 import org.openstreetmap.josm.gui.MainMenu;
-import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.MapViewState.MapViewPoint;
 import org.openstreetmap.josm.gui.NavigatableComponent;
@@ -155,12 +154,12 @@ public class DrawAction extends MapMode implements MapViewPaintable, SelectionCh
 
     /**
      * Constructs a new {@code DrawAction}.
-     * @param mapFrame Map frame
+     * @since 11713
      */
-    public DrawAction(MapFrame mapFrame) {
+    public DrawAction() {
         super(tr("Draw"), "node/autonode", tr("Draw nodes"),
                 Shortcut.registerShortcut("mapmode:draw", tr("Mode: {0}", tr("Draw")), KeyEvent.VK_A, Shortcut.DIRECT),
-                mapFrame, ImageProvider.getCursor("crosshair", null));
+                ImageProvider.getCursor("crosshair", null));
 
         snappingShortcut = Shortcut.registerShortcut("mapmode:drawanglesnapping",
                 tr("Mode: Draw Angle snapping"), KeyEvent.CHAR_UNDEFINED, Shortcut.NONE);
diff --git a/src/org/openstreetmap/josm/actions/mapmode/DrawSnapHelper.java b/src/org/openstreetmap/josm/actions/mapmode/DrawSnapHelper.java
index d3cbf2a..c0ee821 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/DrawSnapHelper.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/DrawSnapHelper.java
@@ -246,7 +246,7 @@ class DrawSnapHelper {
      * Save the snap angles
      * @param angles The angles
      */
-    public void saveAngles(String ... angles) {
+    public void saveAngles(String... angles) {
         Main.pref.putCollection(DRAW_ANGLESNAP_ANGLES, Arrays.asList(angles));
     }
 
diff --git a/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java b/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
index abfb1c3..b6cfae7 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
@@ -44,7 +44,6 @@ import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WaySegment;
 import org.openstreetmap.josm.data.preferences.ColorProperty;
 import org.openstreetmap.josm.gui.MainMenu;
-import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.draw.MapViewPath;
 import org.openstreetmap.josm.gui.draw.SymbolShape;
@@ -209,12 +208,11 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
 
     /**
      * Creates a new ExtrudeAction
-     * @param mapFrame The MapFrame this action belongs to.
+     * @since 11713
      */
-    public ExtrudeAction(MapFrame mapFrame) {
+    public ExtrudeAction() {
         super(tr("Extrude"), /* ICON(mapmode/) */ "extrude/extrude", tr("Create areas"),
                 Shortcut.registerShortcut("mapmode:extrude", tr("Mode: {0}", tr("Extrude")), KeyEvent.VK_X, Shortcut.DIRECT),
-                mapFrame,
                 ImageProvider.getCursor("normal", "rectangle"));
         putValue("help", ht("/Action/Extrude"));
         cursorCreateNew = ImageProvider.getCursor("normal", "rectangle_plus");
diff --git a/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java b/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java
index 4a07a2a..145d6da 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java
@@ -39,7 +39,6 @@ import org.openstreetmap.josm.data.preferences.CachingProperty;
 import org.openstreetmap.josm.data.preferences.ColorProperty;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.data.preferences.StrokeProperty;
-import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.draw.MapViewPath;
 import org.openstreetmap.josm.gui.draw.SymbolShape;
@@ -110,14 +109,14 @@ public class ImproveWayAccuracyAction extends MapMode implements
 
     /**
      * Constructs a new {@code ImproveWayAccuracyAction}.
-     * @param mapFrame Map frame
+     * @since 11713
      */
-    public ImproveWayAccuracyAction(MapFrame mapFrame) {
+    public ImproveWayAccuracyAction() {
         super(tr("Improve Way Accuracy"), "improvewayaccuracy",
                 tr("Improve Way Accuracy mode"),
                 Shortcut.registerShortcut("mapmode:ImproveWayAccuracy",
                 tr("Mode: {0}", tr("Improve Way Accuracy")),
-                KeyEvent.VK_W, Shortcut.DIRECT), mapFrame, Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+                KeyEvent.VK_W, Shortcut.DIRECT), Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
 
         readPreferences();
     }
diff --git a/src/org/openstreetmap/josm/actions/mapmode/MapMode.java b/src/org/openstreetmap/josm/actions/mapmode/MapMode.java
index 85e9c68..1cefec3 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/MapMode.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/MapMode.java
@@ -10,12 +10,12 @@ import java.awt.event.MouseMotionListener;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
+import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Shortcut;
-import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
-import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
 
 /**
  * A class implementing MapMode is able to be selected as an mode for map editing.
@@ -35,10 +35,10 @@ public abstract class MapMode extends JosmAction implements MouseListener, Mouse
      * @param iconName icon filename in {@code mapmode} directory
      * @param tooltip  a longer description of the action that will be displayed in the tooltip.
      * @param shortcut a ready-created shortcut object or null if you don't want a shortcut.
-     * @param mapFrame unused but kept for plugin compatibility. Can be {@code null}
      * @param cursor cursor displayed when map mode is active
+     * @since 11713
      */
-    public MapMode(String name, String iconName, String tooltip, Shortcut shortcut, MapFrame mapFrame, Cursor cursor) {
+    public MapMode(String name, String iconName, String tooltip, Shortcut shortcut, Cursor cursor) {
         super(name, "mapmode/"+iconName, tooltip, shortcut, false);
         this.cursor = cursor;
         putValue("active", Boolean.FALSE);
@@ -49,10 +49,10 @@ public abstract class MapMode extends JosmAction implements MouseListener, Mouse
      * @param name the action's text
      * @param iconName icon filename in {@code mapmode} directory
      * @param tooltip  a longer description of the action that will be displayed in the tooltip.
-     * @param mapFrame unused but kept for plugin compatibility. Can be {@code null}
      * @param cursor cursor displayed when map mode is active
+     * @since 11713
      */
-    public MapMode(String name, String iconName, String tooltip, MapFrame mapFrame, Cursor cursor) {
+    public MapMode(String name, String iconName, String tooltip, Cursor cursor) {
         putValue(NAME, name);
         new ImageProvider("mapmode", iconName).getResource().attachImageIcon(this);
         putValue(SHORT_DESCRIPTION, tooltip);
@@ -60,6 +60,35 @@ public abstract class MapMode extends JosmAction implements MouseListener, Mouse
     }
 
     /**
+     * Constructor for mapmodes without a menu
+     * @param name the action's text
+     * @param iconName icon filename in {@code mapmode} directory
+     * @param tooltip  a longer description of the action that will be displayed in the tooltip.
+     * @param shortcut a ready-created shortcut object or null if you don't want a shortcut.
+     * @param mapFrame unused but kept for plugin compatibility. Can be {@code null}
+     * @param cursor cursor displayed when map mode is active
+     * @deprecated use {@link #MapMode(String, String, String, Shortcut, Cursor) instead}
+     */
+    @Deprecated
+    public MapMode(String name, String iconName, String tooltip, Shortcut shortcut, MapFrame mapFrame, Cursor cursor) {
+        this(name, iconName, tooltip, shortcut, cursor);
+    }
+
+    /**
+     * Constructor for mapmodes with a menu (no shortcut will be registered)
+     * @param name the action's text
+     * @param iconName icon filename in {@code mapmode} directory
+     * @param tooltip  a longer description of the action that will be displayed in the tooltip.
+     * @param mapFrame unused but kept for plugin compatibility. Can be {@code null}
+     * @param cursor cursor displayed when map mode is active
+     * @deprecated use {@link #MapMode(String, String, String, Cursor) instead}
+     */
+    @Deprecated
+    public MapMode(String name, String iconName, String tooltip, MapFrame mapFrame, Cursor cursor) {
+        this(name, iconName, tooltip, cursor);
+    }
+
+    /**
      * Makes this map mode active.
      */
     public void enterMode() {
diff --git a/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java b/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
index 5ad696e..c477642 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
@@ -152,7 +152,7 @@ public class ParallelWayAction extends MapMode implements ModifierListener, MapV
         super(tr("Parallel"), "parallel", tr("Make parallel copies of ways"),
             Shortcut.registerShortcut("mapmode:parallel", tr("Mode: {0}",
                 tr("Parallel")), KeyEvent.VK_P, Shortcut.SHIFT),
-            mapFrame, ImageProvider.getCursor("normal", "parallel"));
+            ImageProvider.getCursor("normal", "parallel"));
         putValue("help", ht("/Action/Parallel"));
         mv = mapFrame.mapView;
     }
diff --git a/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java b/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java
index 867023e..13b7310 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java
@@ -10,6 +10,7 @@ import java.awt.event.MouseEvent;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.gui.layer.markerlayer.PlayHeadMarker;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
  * Singleton marker class to track position of audio.
@@ -29,8 +30,8 @@ public class PlayHeadDragMode extends MapMode {
      * @param m Audio marker
      */
     public PlayHeadDragMode(PlayHeadMarker m) {
-        super(tr("Drag play head"), "playheaddrag", tr("Drag play head"), null,
-                Main.map, Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
+        super(tr("Drag play head"), "playheaddrag", tr("Drag play head"), (Shortcut) null,
+                Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
         playHeadMarker = m;
     }
 
diff --git a/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java b/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
index bb15f29..38136ab 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
@@ -181,7 +181,6 @@ public class SelectAction extends MapMode implements ModifierListener, KeyPressR
     public SelectAction(MapFrame mapFrame) {
         super(tr("Select"), "move/move", tr("Select, move, scale and rotate objects"),
                 Shortcut.registerShortcut("mapmode:select", tr("Mode: {0}", tr("Select")), KeyEvent.VK_S, Shortcut.DIRECT),
-                mapFrame,
                 ImageProvider.getCursor("normal", "selection"));
         mv = mapFrame.mapView;
         putValue("help", ht("/Action/Select"));
diff --git a/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java b/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java
index a357b47..daac666 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java
@@ -43,7 +43,7 @@ public class ZoomAction extends MapMode implements SelectionEnded {
     public ZoomAction(MapFrame mapFrame) {
         super(tr("Zoom"), "zoom", tr("Zoom and move map"),
                 Shortcut.registerShortcut("mapmode:zoom", tr("Mode: {0}", tr("Zoom")), KeyEvent.CHAR_UNDEFINED, Shortcut.NONE),
-                mapFrame, ImageProvider.getCursor("normal", "zoom"));
+                ImageProvider.getCursor("normal", "zoom"));
         selectionManager = new SelectionManager(this, true, mapFrame.mapView);
     }
 
diff --git a/src/org/openstreetmap/josm/command/SequenceCommand.java b/src/org/openstreetmap/josm/command/SequenceCommand.java
index 226be55..0bd9ba4 100644
--- a/src/org/openstreetmap/josm/command/SequenceCommand.java
+++ b/src/org/openstreetmap/josm/command/SequenceCommand.java
@@ -72,17 +72,17 @@ public class SequenceCommand extends Command {
     }
 
     protected final void undoCommands(int start) {
-        // We probably aborted this halfway though the
-        // execution sequence because of a sub-command
-        // error.  We already undid the sub-commands.
-        if (!sequenceComplete)
-            return;
         for (int i = start; i >= 0; --i) {
             sequence[i].undoCommand();
         }
     }
 
     @Override public void undoCommand() {
+        // We probably aborted this halfway though the
+        // execution sequence because of a sub-command
+        // error.  We already undid the sub-commands.
+        if (!sequenceComplete)
+            return;
         undoCommands(sequence.length-1);
     }
 
@@ -116,7 +116,7 @@ public class SequenceCommand extends Command {
         return prims;
     }
 
-    protected final void setSequence(Command ... sequence) {
+    protected final void setSequence(Command... sequence) {
         this.sequence = Utils.copyArray(sequence);
     }
 
diff --git a/src/org/openstreetmap/josm/data/AutosaveTask.java b/src/org/openstreetmap/josm/data/AutosaveTask.java
index 7cb06c4..1a4a999 100644
--- a/src/org/openstreetmap/josm/data/AutosaveTask.java
+++ b/src/org/openstreetmap/josm/data/AutosaveTask.java
@@ -232,7 +232,7 @@ public class AutosaveTask extends TimerTask implements LayerChangeListener, List
                 if (PROP_NOTIFICATION.get() && !layersInfo.isEmpty()) {
                     GuiHelper.runInEDT(this::displayNotification);
                 }
-            } catch (RuntimeException t) {
+            } catch (RuntimeException t) { // NOPMD
                 // Don't let exception stop time thread
                 Main.error("Autosave failed:");
                 Main.error(t);
diff --git a/src/org/openstreetmap/josm/data/Bounds.java b/src/org/openstreetmap/josm/data/Bounds.java
index aa1a47f..78ec1ae 100644
--- a/src/org/openstreetmap/josm/data/Bounds.java
+++ b/src/org/openstreetmap/josm/data/Bounds.java
@@ -185,7 +185,7 @@ public class Bounds {
      * @param coords exactly 4 values: min lat, min lon, max lat, max lon
      * @throws IllegalArgumentException if coords does not contain 4 double values
      */
-    public Bounds(double ... coords) {
+    public Bounds(double... coords) {
         this(coords, true);
     }
 
diff --git a/src/org/openstreetmap/josm/data/Preferences.java b/src/org/openstreetmap/josm/data/Preferences.java
index a64a2d9..ebf17d1 100644
--- a/src/org/openstreetmap/josm/data/Preferences.java
+++ b/src/org/openstreetmap/josm/data/Preferences.java
@@ -1419,7 +1419,8 @@ public class Preferences {
                 Field field = Toolkit.class.getDeclaredField("resources");
                 Utils.setObjectsAccessible(field);
                 field.set(null, ResourceBundle.getBundle("sun.awt.resources.awt"));
-            } catch (ReflectiveOperationException | RuntimeException e) {
+            } catch (ReflectiveOperationException | RuntimeException e) { // NOPMD
+                // Catch RuntimeException in order to catch InaccessibleObjectException, new in Java 9
                 Main.warn(e);
             }
         }
diff --git a/src/org/openstreetmap/josm/data/ProjectionBounds.java b/src/org/openstreetmap/josm/data/ProjectionBounds.java
index 1e4059a..9e3da01 100644
--- a/src/org/openstreetmap/josm/data/ProjectionBounds.java
+++ b/src/org/openstreetmap/josm/data/ProjectionBounds.java
@@ -96,6 +96,26 @@ public class ProjectionBounds {
     }
 
     /**
+     * Extends bounds to include bounds {@code b}.
+     * @param b bounds to include
+     * @since 11774
+     */
+    public void extend(ProjectionBounds b) {
+        if (b.minEast < minEast) {
+            minEast = b.minEast;
+        }
+        if (b.maxEast > maxEast) {
+            maxEast = b.maxEast;
+        }
+        if (b.minNorth < minNorth) {
+            minNorth = b.minNorth;
+        }
+        if (b.maxNorth > maxNorth) {
+            maxNorth = b.maxNorth;
+        }
+    }
+
+    /**
      * Returns the center east/north.
      * @return the center east/north
      */
diff --git a/src/org/openstreetmap/josm/data/cache/JCSCacheManager.java b/src/org/openstreetmap/josm/data/cache/JCSCacheManager.java
index c543bf7..c9f1592 100644
--- a/src/org/openstreetmap/josm/data/cache/JCSCacheManager.java
+++ b/src/org/openstreetmap/josm/data/cache/JCSCacheManager.java
@@ -181,7 +181,7 @@ public final class JCSCacheManager {
                 }
             } catch (IOException e) {
                 throw e;
-            } catch (Exception e) {
+            } catch (Exception e) { // NOPMD
                 throw new IOException(e);
             }
         }
diff --git a/src/org/openstreetmap/josm/data/gpx/GpxData.java b/src/org/openstreetmap/josm/data/gpx/GpxData.java
index d509c5c..f9498d5 100644
--- a/src/org/openstreetmap/josm/data/gpx/GpxData.java
+++ b/src/org/openstreetmap/josm/data/gpx/GpxData.java
@@ -343,7 +343,7 @@ public class GpxData extends WithAttributes implements Data {
      * @return an Iterable object, which iterates over all track segments and
      * over all routes
      */
-    public Iterable<Collection<WayPoint>> getLinesIterable(final boolean ... trackVisibility) {
+    public Iterable<Collection<WayPoint>> getLinesIterable(final boolean... trackVisibility) {
         return () -> new LinesIterator(this, trackVisibility);
     }
 
@@ -396,7 +396,7 @@ public class GpxData extends WithAttributes implements Data {
          * @param trackVisibility An array indicating which tracks should be
          * included in the iteration. Can be null, then all tracks are included.
          */
-        public LinesIterator(GpxData data, boolean ... trackVisibility) {
+        public LinesIterator(GpxData data, boolean... trackVisibility) {
             itTracks = data.tracks.iterator();
             idxTracks = -1;
             itRoutes = data.routes.iterator();
diff --git a/src/org/openstreetmap/josm/data/imagery/GetCapabilitiesParseHelper.java b/src/org/openstreetmap/josm/data/imagery/GetCapabilitiesParseHelper.java
index 6569598..9c6141e 100644
--- a/src/org/openstreetmap/josm/data/imagery/GetCapabilitiesParseHelper.java
+++ b/src/org/openstreetmap/josm/data/imagery/GetCapabilitiesParseHelper.java
@@ -63,6 +63,7 @@ public final class GetCapabilitiesParseHelper {
     static final QName QN_OWS_OPERATION           = new QName(OWS_NS_URL, "Operation");
     static final QName QN_OWS_OPERATIONS_METADATA = new QName(OWS_NS_URL, "OperationsMetadata");
     static final QName QN_OWS_SUPPORTED_CRS       = new QName(OWS_NS_URL, "SupportedCRS");
+    static final QName QN_OWS_TITLE               = new QName(OWS_NS_URL, "Title");
     static final QName QN_OWS_VALUE               = new QName(OWS_NS_URL, "Value");
     // CHECKSTYLE.ON: SingleSpaceSeparator
 
@@ -117,7 +118,7 @@ public final class GetCapabilitiesParseHelper {
      * @return true if tag was found, false otherwise
      * @throws XMLStreamException See {@link XMLStreamReader}
      */
-    public static boolean moveReaderToTag(XMLStreamReader reader, QName ... tags) throws XMLStreamException {
+    public static boolean moveReaderToTag(XMLStreamReader reader, QName... tags) throws XMLStreamException {
         QName stopTag = reader.getName();
         int currentLevel = 0;
         QName searchTag = tags[currentLevel];
diff --git a/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java b/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java
index aa2fa33..f7b69b0 100644
--- a/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java
+++ b/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java
@@ -195,7 +195,7 @@ public class ImageryInfo extends TileSourceInfo implements Comparable<ImageryInf
       * marked as best in other editors
       * @since 11575
       */
-    private boolean bestMarked = false;
+    private boolean bestMarked;
     /** mirrors of different type for this entry */
     private List<ImageryInfo> mirrors;
     /** icon used in menu */
@@ -858,26 +858,26 @@ public class ImageryInfo extends TileSourceInfo implements Comparable<ImageryInf
      * @since 8065
      */
     public String getToolTipText() {
-        String res = getName();
+        StringBuilder res = new StringBuilder(getName());
         boolean html = false;
-        String date = getDate();
-        if (date != null && !date.isEmpty()) {
-            res += "<br>" + tr("Date of imagery: {0}", date);
+        String dateStr = getDate();
+        if (dateStr != null && !dateStr.isEmpty()) {
+            res.append("<br>").append(tr("Date of imagery: {0}", dateStr));
             html = true;
         }
         if (bestMarked) {
-            res += "<br>" + tr("This imagery is marked as best in this region in other editors.");
+            res.append("<br>").append(tr("This imagery is marked as best in this region in other editors."));
             html = true;
         }
         String desc = getDescription();
         if (desc != null && !desc.isEmpty()) {
-            res += "<br>" + desc;
+            res.append("<br>").append(desc);
             html = true;
         }
         if (html) {
-            res = "<html>" + res + "</html>";
+            res.insert(0, "<html>").append("</html>");
         }
-        return res;
+        return res.toString();
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java b/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java
index 808c1fe..f2fbdc8 100644
--- a/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java
+++ b/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java
@@ -120,6 +120,7 @@ public class ImageryLayerInfo {
         private final List<ImageryInfo> newLayers = new ArrayList<>();
         private ImageryReader reader;
         private boolean canceled;
+        private boolean loadError;
 
         DefaultEntryLoader(boolean clearCache, boolean fastFail) {
             super(tr("Update default entries"));
@@ -160,8 +161,10 @@ public class ImageryLayerInfo {
                 Collection<ImageryInfo> result = reader.parse();
                 newLayers.addAll(result);
             } catch (IOException ex) {
+                loadError = true;
                 Main.error(ex, false);
             } catch (SAXException ex) {
+                loadError = true;
                 Main.error(ex);
             }
         }
@@ -181,9 +184,11 @@ public class ImageryLayerInfo {
             Collections.sort(defaultLayers);
             Collections.sort(allDefaultLayers);
             buildIdMap(allDefaultLayers, defaultLayerIds);
-            updateEntriesFromDefaults();
+            updateEntriesFromDefaults(!loadError);
             buildIdMap(layers, layerIds);
-            dropOldEntries();
+            if (!loadError && !defaultLayerIds.isEmpty()) {
+                dropOldEntries();
+            }
         }
     }
 
@@ -213,29 +218,44 @@ public class ImageryLayerInfo {
 
     /**
      * Update user entries according to the list of default entries.
+     * @param dropold if <code>true</code> old entries should be removed
+     * @since 11706
      */
-    public void updateEntriesFromDefaults() {
+    public void updateEntriesFromDefaults(boolean dropold) {
         // add new default entries to the user selection
         boolean changed = false;
-        Collection<String> knownDefaults = Main.pref.getCollection("imagery.layers.default");
-        Collection<String> newKnownDefaults = new TreeSet<>(knownDefaults);
+        Collection<String> knownDefaults = new TreeSet<>(Main.pref.getCollection("imagery.layers.default"));
+        Collection<String> newKnownDefaults = new TreeSet<>();
         for (ImageryInfo def : defaultLayers) {
             if (def.isDefaultEntry()) {
                 boolean isKnownDefault = false;
-                for (String url : knownDefaults) {
-                    if (isSimilar(url, def.getUrl())) {
+                for (String entry : knownDefaults) {
+                    if (entry.equals(def.getId())) {
                         isKnownDefault = true;
+                        newKnownDefaults.add(entry);
+                        knownDefaults.remove(entry);
+                        break;
+                    } else if (isSimilar(entry, def.getUrl())) {
+                        isKnownDefault = true;
+                        if (def.getId() != null) {
+                            newKnownDefaults.add(def.getId());
+                        }
+                        knownDefaults.remove(entry);
                         break;
                     }
                 }
                 boolean isInUserList = false;
                 if (!isKnownDefault) {
-                    newKnownDefaults.add(def.getUrl());
-                    for (ImageryInfo i : layers) {
-                        if (isSimilar(def, i)) {
-                            isInUserList = true;
-                            break;
+                    if (def.getId() != null) {
+                        newKnownDefaults.add(def.getId());
+                        for (ImageryInfo i : layers) {
+                            if (isSimilar(def, i)) {
+                                isInUserList = true;
+                                break;
+                            }
                         }
+                    } else {
+                        Main.error("Default imagery ''{0}'' has no id. Skipping.", def.getName());
                     }
                 }
                 if (!isKnownDefault && !isInUserList) {
@@ -244,6 +264,9 @@ public class ImageryLayerInfo {
                 }
             }
         }
+        if (!dropold && !knownDefaults.isEmpty()) {
+            newKnownDefaults.addAll(knownDefaults);
+        }
         Main.pref.putCollection("imagery.layers.default", newKnownDefaults);
 
         // automatically update user entries with same id as a default entry
diff --git a/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java b/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java
index 550102c..ca58643 100644
--- a/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java
+++ b/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java
@@ -16,7 +16,7 @@ import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
 
 public class OffsetBookmark {
-    public static final List<OffsetBookmark> allBookmarks = new ArrayList<>();
+    private static final List<OffsetBookmark> allBookmarks = new ArrayList<>();
 
     public String projectionCode;
     public String layerName;
@@ -93,6 +93,56 @@ public class OffsetBookmark {
         Main.pref.putArray("imagery.offsets", coll);
     }
 
+    /**
+     * Returns all bookmarks.
+     * @return all bookmarks (unmodifiable collection)
+     * @since 11651
+     */
+    public static List<OffsetBookmark> getBookmarks() {
+        return Collections.unmodifiableList(allBookmarks);
+    }
+
+    /**
+     * Returns the number of bookmarks.
+     * @return the number of bookmarks
+     * @since 11651
+     */
+    public static int getBookmarksSize() {
+        return allBookmarks.size();
+    }
+
+    /**
+     * Adds a bookmark.
+     * @param ob bookmark to add
+     * @return {@code true}
+     * @since 11651
+     */
+    public static boolean addBookmark(OffsetBookmark ob) {
+        return allBookmarks.add(ob);
+    }
+
+    /**
+     * Removes a bookmark.
+     * @param ob bookmark to remove
+     * @return {@code true} if this list contained the specified element
+     * @since 11651
+     */
+    public static boolean removeBookmark(OffsetBookmark ob) {
+        return allBookmarks.remove(ob);
+    }
+
+    /**
+     * Returns the bookmark at the given index.
+     * @param index bookmark index
+     * @return the bookmark at the given index
+     * @throws IndexOutOfBoundsException if the index is out of range
+     *         (<tt>index < 0 || index >= size()</tt>)
+     * @since 11651
+     */
+    public static OffsetBookmark getBookmarkByIndex(int index) {
+        return allBookmarks.get(index);
+    }
+
     public static OffsetBookmark getBookmarkByName(ImageryLayer layer, String name) {
         for (OffsetBookmark b : allBookmarks) {
             if (b.isUsable(layer) && name.equals(b.name))
diff --git a/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoaderJob.java b/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoaderJob.java
index 1dedaaf..fa78c6f 100644
--- a/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoaderJob.java
+++ b/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoaderJob.java
@@ -183,14 +183,16 @@ public class TMSCachedTileLoaderJob extends JCSCachedTileLoaderJob<String, Buffe
                 switch(result) {
                 case SUCCESS:
                     handleNoTileAtZoom();
-                    int httpStatusCode = attributes.getResponseCode();
-                    if (httpStatusCode >= 400 && !isNoTileAtZoom()) {
-                        if (attributes.getErrorMessage() == null) {
-                            tile.setError(tr("HTTP error {0} when loading tiles", httpStatusCode));
-                        } else {
-                            tile.setError(tr("Error downloading tiles: {0}", attributes.getErrorMessage()));
+                    if (attributes != null) {
+                        int httpStatusCode = attributes.getResponseCode();
+                        if (httpStatusCode >= 400 && !isNoTileAtZoom()) {
+                            if (attributes.getErrorMessage() == null) {
+                                tile.setError(tr("HTTP error {0} when loading tiles", httpStatusCode));
+                            } else {
+                                tile.setError(tr("Error downloading tiles: {0}", attributes.getErrorMessage()));
+                            }
+                            status = false;
                         }
-                        status = false;
                     }
                     status &= tryLoadTileImage(object); //try to keep returned image as background
                     break;
diff --git a/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java b/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java
index 65d1fba..8db8d27 100644
--- a/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java
+++ b/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java
@@ -143,7 +143,8 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
 
     private static class Layer {
         private String format;
-        private String name;
+        private String identifier;
+        private String title;
         private TileMatrixSet tileMatrixSet;
         private String baseUrl;
         private String style;
@@ -152,7 +153,8 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
         Layer(Layer l) {
             Objects.requireNonNull(l);
             format = l.format;
-            name = l.name;
+            identifier = l.identifier;
+            title = l.title;
             baseUrl = l.baseUrl;
             style = l.style;
             tileMatrixSet = new TileMatrixSet(l.tileMatrixSet);
@@ -160,6 +162,17 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
 
         Layer() {
         }
+
+        /**
+         * Get title of the layer for user display.
+         *
+         * This is either the content of the Title element (if available) or
+         * the layer identifier (as fallback)
+         * @return title of the layer for user display
+         */
+        public String getUserTitle() {
+            return title != null ? title : identifier;
+        }
     }
 
     private static final class SelectLayerDialog extends ExtendedDialog {
@@ -168,7 +181,7 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
 
         SelectLayerDialog(Collection<Layer> layers) {
             super(Main.parent, tr("Select WMTS layer"), new String[]{tr("Add layers"), tr("Cancel")});
-            this.layers = groupLayersByName(layers);
+            this.layers = groupLayersByNameAndTileMatrixSet(layers);
             //getLayersTable(layers, Main.getProjection())
             this.list = new JTable(
                     new AbstractTableModel() {
@@ -178,7 +191,7 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
                             case 0:
                                 return SelectLayerDialog.this.layers.get(rowIndex).getValue()
                                         .stream()
-                                        .map(x -> x.name)
+                                        .map(Layer::getUserTitle)
                                         .collect(Collectors.joining(", ")); //this should be only one
                             case 1:
                                 return SelectLayerDialog.this.layers.get(rowIndex).getValue()
@@ -230,7 +243,13 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
                 return null; //nothing selected
             }
             Layer selectedLayer = layers.get(index).getValue().get(0);
-            return new WMTSDefaultLayer(selectedLayer.name, selectedLayer.tileMatrixSet.identifier);
+            return new WMTSDefaultLayer(selectedLayer.identifier, selectedLayer.tileMatrixSet.identifier);
+        }
+
+        private static List<Entry<String, List<Layer>>> groupLayersByNameAndTileMatrixSet(Collection<Layer> layers) {
+            Map<String, List<Layer>> layerByName = layers.stream().collect(
+                    Collectors.groupingBy(x -> x.identifier + '\u001c' + x.tileMatrixSet.identifier));
+            return layerByName.entrySet().stream().sorted(Map.Entry.comparingByKey()).collect(Collectors.toList());
         }
     }
 
@@ -245,7 +264,6 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
 
     private final WMTSDefaultLayer defaultLayer;
 
-
     /**
      * Creates a tile source based on imagery info
      * @param info imagery info
@@ -268,12 +286,18 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
      * @return Name of selected layer
      */
     public DefaultLayer userSelectLayer() {
-        Collection<Entry<String, List<Layer>>> grouppedLayers = groupLayersByName(layers);
-
-        // if there is only one layer name no point in asking
-        if (grouppedLayers.size() == 1) {
-            Layer selectedLayer = grouppedLayers.iterator().next().getValue().get(0);
-            return new WMTSDefaultLayer(selectedLayer.name, selectedLayer.tileMatrixSet.identifier);
+        Map<String, List<Layer>> layerById = layers.stream().collect(
+                Collectors.groupingBy(x -> x.identifier));
+        if (layerById.size() == 1) { // only one layer
+            List<Layer> ls = layerById.entrySet().iterator().next().getValue()
+                    .stream().filter(
+                            u -> u.tileMatrixSet.crs.equals(Main.getProjection().toCode()))
+                    .collect(Collectors.toList());
+            if (ls.size() == 1) {
+                // only one tile matrix set with matching projection - no point in asking
+                Layer selectedLayer = ls.get(0);
+                return new WMTSDefaultLayer(selectedLayer.identifier, selectedLayer.tileMatrixSet.identifier);
+            }
         }
 
         final SelectLayerDialog layerSelection = new SelectLayerDialog(layers);
@@ -295,12 +319,6 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
         return output.toString();
     }
 
-    private static List<Entry<String, List<Layer>>> groupLayersByName(Collection<Layer> layers) {
-        Map<String, List<Layer>> layerByName = layers.stream().collect(
-                Collectors.groupingBy(x -> x.name + '\u001c' + x.tileMatrixSet.identifier));
-        return layerByName.entrySet().stream().sorted(Map.Entry.comparingByKey()).collect(Collectors.toList());
-    }
-
     /**
      * @return capabilities
      * @throws IOException in case of any I/O error
@@ -355,7 +373,10 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
                 event = reader.next()) {
             if (event == XMLStreamReader.START_ELEMENT) {
                 if (QN_LAYER.equals(reader.getName())) {
-                    layers.add(parseLayer(reader));
+                    Layer l = parseLayer(reader);
+                    if (l != null) {
+                        layers.add(l);
+                    }
                 }
                 if (QN_TILEMATRIXSET.equals(reader.getName())) {
                     TileMatrixSet entry = parseTileMatrixSet(reader);
@@ -385,7 +406,10 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
     private static Layer parseLayer(XMLStreamReader reader) throws XMLStreamException {
         Layer layer = new Layer();
         Stack<QName> tagStack = new Stack<>();
-        List<String> supportedMimeTypes = Arrays.asList(ImageIO.getReaderMIMETypes());
+        List<String> supportedMimeTypes = new ArrayList<>(Arrays.asList(ImageIO.getReaderMIMETypes()));
+        supportedMimeTypes.add("image/jpgpng");         // used by ESRI
+        supportedMimeTypes.add("image/png8");           // used by geoserver
+        Collection<String> unsupportedFormats = new ArrayList<>();
 
         for (int event = reader.getEventType();
                 reader.hasNext() && !(event == XMLStreamReader.END_ELEMENT && QN_LAYER.equals(reader.getName()));
@@ -397,9 +421,13 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
                         String format = reader.getElementText();
                         if (supportedMimeTypes.contains(format)) {
                             layer.format = format;
+                        } else {
+                            unsupportedFormats.add(format);
                         }
                     } else if (GetCapabilitiesParseHelper.QN_OWS_IDENTIFIER.equals(reader.getName())) {
-                        layer.name = reader.getElementText();
+                        layer.identifier = reader.getElementText();
+                    } else if (GetCapabilitiesParseHelper.QN_OWS_TITLE.equals(reader.getName())) {
+                        layer.title = reader.getElementText();
                     } else if (QN_RESOURCE_URL.equals(reader.getName()) &&
                             "tile".equals(reader.getAttributeValue("", "resourceType"))) {
                         layer.baseUrl = reader.getAttributeValue("", "template");
@@ -428,6 +456,13 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
         if (layer.style == null) {
             layer.style = "";
         }
+        if (layer.format == null) {
+            // no format found - it's mandatory parameter - can't use this layer
+            Main.warn(tr("Can''t use layer {0} because no supported formats where found. Layer is available in formats: {1}",
+                    layer.getUserTitle(),
+                    String.join(", ", unsupportedFormats)));
+            return null;
+        }
         return layer;
     }
 
@@ -561,9 +596,14 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
         // getLayers will return only layers matching the name, if the user already choose the layer
         // so we will not ask the user again to chose the layer, if he just changes projection
         Collection<Layer> candidates = getLayers(
-                currentLayer != null ? new WMTSDefaultLayer(currentLayer.name, currentLayer.tileMatrixSet.identifier) : defaultLayer,
+                currentLayer != null ? new WMTSDefaultLayer(currentLayer.identifier, currentLayer.tileMatrixSet.identifier) : defaultLayer,
                 proj.toCode());
 
+        if (candidates.size() > 1 && defaultLayer != null) {
+            candidates = candidates.stream()
+                    .filter(t -> t.tileMatrixSet.identifier.equals(defaultLayer.getTileMatrixSet()))
+                    .collect(Collectors.toList());
+        }
         if (candidates.size() == 1) {
             Layer newLayer = candidates.iterator().next();
             if (newLayer != null) {
@@ -577,9 +617,9 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
             }
         } else if (candidates.size() > 1) {
             Main.warn("More than one layer WMTS available: {0} for projection {1} and name {2}. Do not know which to process",
-                    candidates.stream().map(x -> x.name + ": " + x.tileMatrixSet.identifier).collect(Collectors.joining(", ")),
+                    candidates.stream().map(x -> x.getUserTitle() + ": " + x.tileMatrixSet.identifier).collect(Collectors.joining(", ")),
                     proj.toCode(),
-                    currentLayer != null ? currentLayer.name : defaultLayer
+                    currentLayer != null ? currentLayer.getUserTitle() : defaultLayer
                     );
         }
         this.crsScale = getTileSize() * 0.28e-03 / proj.getMetersPerUnit();
@@ -596,8 +636,7 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
         if (this.layers != null) {
             for (Layer layer: this.layers) {
                 if ((searchLayer == null || (// if it's null, then accept all layers
-                        searchLayer.getLayerName().equals(layer.name) &&
-                        searchLayer.getTileMatrixSet().equals(layer.tileMatrixSet.identifier)))
+                        searchLayer.getLayerName().equals(layer.identifier)))
                         && (projectionCode == null || // if it's null, then accept any projection
                         projectionCode.equals(layer.tileMatrixSet.crs))) {
                     ret.add(layer);
@@ -649,7 +688,7 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
             return ""; // no matrix, probably unsupported CRS selected.
         }
 
-        return url.replaceAll("\\{layer\\}", this.currentLayer.name)
+        return url.replaceAll("\\{layer\\}", this.currentLayer.identifier)
                 .replaceAll("\\{format\\}", this.currentLayer.format)
                 .replaceAll("\\{TileMatrixSet\\}", this.currentTileMatrixSet.identifier)
                 .replaceAll("\\{TileMatrix\\}", tileMatrix.identifier)
@@ -821,7 +860,7 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
             }
         } else {
             for (Layer layer: this.layers) {
-                if (currentLayer.name.equals(layer.name)) {
+                if (currentLayer.identifier.equals(layer.identifier)) {
                     ret.add(layer.tileMatrixSet.crs);
                 }
             }
diff --git a/src/org/openstreetmap/josm/data/notes/Note.java b/src/org/openstreetmap/josm/data/notes/Note.java
index ccdd77f..176c7dd 100644
--- a/src/org/openstreetmap/josm/data/notes/Note.java
+++ b/src/org/openstreetmap/josm/data/notes/Note.java
@@ -4,6 +4,7 @@ package org.openstreetmap.josm.data.notes;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -24,6 +25,43 @@ public class Note {
         CLOSED
     }
 
+    /**
+     * Sorts notes in the following order:
+     * 1) Open notes
+     * 2) Closed notes
+     * 3) New notes
+     * Within each subgroup it sorts by ID
+     */
+    public static final Comparator<Note> DEFAULT_COMPARATOR = (n1, n2) -> {
+        if (n1.getId() < 0 && n2.getId() > 0) {
+            return 1;
+        }
+        if (n1.getId() > 0 && n2.getId() < 0) {
+            return -1;
+        }
+        if (n1.getState() == State.CLOSED && n2.getState() == State.OPEN) {
+            return 1;
+        }
+        if (n1.getState() == State.OPEN && n2.getState() == State.CLOSED) {
+            return -1;
+        }
+        return Long.compare(Math.abs(n1.getId()), Math.abs(n2.getId()));
+    };
+
+    /** Sorts notes strictly by creation date */
+    public static final Comparator<Note> DATE_COMPARATOR = (n1, n2) -> n1.createdAt.compareTo(n2.createdAt);
+
+    /** Sorts notes by user, then creation date */
+    public static final Comparator<Note> USER_COMPARATOR = (n1, n2) -> {
+        String n1User = n1.getFirstComment().getUser().getName();
+        String n2User = n2.getFirstComment().getUser().getName();
+        return n1User.equals(n2User) ? DATE_COMPARATOR.compare(n1, n2) : n1User.compareTo(n2User);
+    };
+
+    /** Sorts notes by the last modified date */
+    public static final Comparator<Note> LAST_ACTION_COMPARATOR =
+            (n1, n2) -> NoteComment.DATE_COMPARATOR.compare(n1.getLastComment(), n2.getLastComment());
+
     private long id;
     private LatLon latLon;
     private Date createdAt;
@@ -59,7 +97,7 @@ public class Note {
 
     /** @return Date that this note was submitted */
     public Date getCreatedAt() {
-        return createdAt;
+        return cloneDate(createdAt);
     }
 
     /**
@@ -67,12 +105,12 @@ public class Note {
      * @param createdAt date at which this note has been created
      */
     public void setCreatedAt(Date createdAt) {
-        this.createdAt = createdAt;
+        this.createdAt = cloneDate(createdAt);
     }
 
     /** @return Date that this note was closed. Null if it is still open. */
     public Date getClosedAt() {
-        return closedAt;
+        return cloneDate(closedAt);
     }
 
     /**
@@ -80,7 +118,7 @@ public class Note {
      * @param closedAt date at which this note has been closed
      */
     public void setClosedAt(Date closedAt) {
-        this.closedAt = closedAt;
+        this.closedAt = cloneDate(closedAt);
     }
 
     /** @return The open or closed state of this note */
@@ -102,6 +140,15 @@ public class Note {
     }
 
     /**
+     * Returns the last comment, or {@code null}.
+     * @return the last comment, or {@code null}
+     * @since 11821
+     */
+    public NoteComment getLastComment() {
+        return comments.isEmpty() ? null : comments.get(comments.size()-1);
+    }
+
+    /**
      * Adds a comment.
      * @param comment note comment
      */
@@ -124,7 +171,7 @@ public class Note {
      */
     public void updateWith(Note note) {
         this.comments = note.comments;
-        this.createdAt = note.createdAt;
+        this.createdAt = cloneDate(note.createdAt);
         this.id = note.id;
         this.state = note.state;
         this.latLon = note.latLon;
@@ -149,4 +196,13 @@ public class Note {
     public String toString() {
         return tr("Note") + ' ' + id + ": " + getFirstComment();
     }
+
+    /**
+     * Null-safe date cloning method.
+     * @param d date to clone, or null
+     * @return cloned date, or null
+     */
+    static Date cloneDate(Date d) {
+        return d != null ? (Date) d.clone() : null;
+    }
 }
diff --git a/src/org/openstreetmap/josm/data/notes/NoteComment.java b/src/org/openstreetmap/josm/data/notes/NoteComment.java
index 2eb9d47..93fee41 100644
--- a/src/org/openstreetmap/josm/data/notes/NoteComment.java
+++ b/src/org/openstreetmap/josm/data/notes/NoteComment.java
@@ -1,6 +1,7 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.data.notes;
 
+import java.util.Comparator;
 import java.util.Date;
 
 import org.openstreetmap.josm.data.osm.User;
@@ -37,6 +38,9 @@ public class NoteComment {
         HIDDEN
     }
 
+    /** Sorts note comments strictly by creation date */
+    public static final Comparator<NoteComment> DATE_COMPARATOR = (n1, n2) -> n1.commentTimestamp.compareTo(n2.commentTimestamp);
+
     /**
      * @param createDate The time at which this comment was added
      * @param user JOSM User object of the user who created the comment
@@ -47,7 +51,7 @@ public class NoteComment {
     public NoteComment(Date createDate, User user, String commentText, Action action, boolean isNew) {
         this.text = commentText;
         this.user = user;
-        this.commentTimestamp = createDate;
+        this.commentTimestamp = Note.cloneDate(createDate);
         this.action = action;
         this.isNew = isNew;
     }
@@ -64,7 +68,7 @@ public class NoteComment {
 
     /** @return The time at which this comment was created */
     public Date getCommentTimestamp() {
-        return commentTimestamp;
+        return Note.cloneDate(commentTimestamp);
     }
 
     /** @return the action associated with this note */
diff --git a/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java b/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java
index 3dec037..6b487b1 100644
--- a/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java
+++ b/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java
@@ -730,7 +730,7 @@ public abstract class AbstractPrimitive implements IPrimitive {
      * @return true, if this primitive has a tag with any of the <code>keys</code>
      * @since 11587
      */
-    public boolean hasKey(String ... keys) {
+    public boolean hasKey(String... keys) {
         return keys != null && Arrays.stream(keys).anyMatch(this::hasKey);
     }
 
diff --git a/src/org/openstreetmap/josm/data/osm/DataSet.java b/src/org/openstreetmap/josm/data/osm/DataSet.java
index f036888..c610d13 100644
--- a/src/org/openstreetmap/josm/data/osm/DataSet.java
+++ b/src/org/openstreetmap/josm/data/osm/DataSet.java
@@ -99,6 +99,46 @@ import org.openstreetmap.josm.tools.Utils;
 public final class DataSet implements Data, ProjectionChangeListener {
 
     /**
+     * Upload policy.
+     *
+     * Determines if upload to the OSM server is intended, discouraged, or
+     * disabled / blocked.
+     */
+    public enum UploadPolicy {
+        /**
+         * Normal dataset, upload intended.
+         */
+        NORMAL("true"),
+        /**
+         * Upload discouraged, for example when using or distributing a private dataset.
+         */
+        DISCOURAGED("false"),
+        /**
+         * Upload blocked.
+         * Upload options completely disabled. Intended for special cases
+         * where a warning dialog is not enough, see #12731.
+         *
+         * For the user, it shouldn't be too easy to disable this flag.
+         */
+        BLOCKED("never");
+
+        final String xmlFlag;
+
+        UploadPolicy(String xmlFlag) {
+            this.xmlFlag = xmlFlag;
+        }
+
+        /**
+         * Get the corresponding value of the <code>upload='...'</code> XML-attribute
+         * in the .osm file.
+         * @return value of the <code>upload</code> attribute
+         */
+        public String getXmlFlag() {
+            return xmlFlag;
+        }
+    }
+
+    /**
      * Maximum number of events that can be fired between beginUpdate/endUpdate to be send as single events (ie without DatasetChangedEvent)
      */
     private static final int MAX_SINGLE_EVENTS = 30;
@@ -123,7 +163,7 @@ public final class DataSet implements Data, ProjectionChangeListener {
 
     private int highlightUpdateCount;
 
-    private boolean uploadDiscouraged;
+    private UploadPolicy uploadPolicy;
 
     private final ReadWriteLock lock = new ReentrantReadWriteLock();
     private final Object selectionLock = new Object();
@@ -299,21 +339,46 @@ public final class DataSet implements Data, ProjectionChangeListener {
     }
 
     /**
-     * Determines if upload is being discouraged (i.e. this dataset contains private data which should not be uploaded)
+     * Determines if upload is being discouraged.
+     * (i.e. this dataset contains private data which should not be uploaded)
      * @return {@code true} if upload is being discouraged, {@code false} otherwise
      * @see #setUploadDiscouraged
+     * @deprecated use {@link #getUploadPolicy()}
      */
+    @Deprecated
     public boolean isUploadDiscouraged() {
-        return uploadDiscouraged;
+        return uploadPolicy == UploadPolicy.DISCOURAGED || uploadPolicy == UploadPolicy.BLOCKED;
     }
 
     /**
      * Sets the "upload discouraged" flag.
      * @param uploadDiscouraged {@code true} if this dataset contains private data which should not be uploaded
      * @see #isUploadDiscouraged
+     * @deprecated use {@link #setUploadPolicy(UploadPolicy)}
      */
+    @Deprecated
     public void setUploadDiscouraged(boolean uploadDiscouraged) {
-        this.uploadDiscouraged = uploadDiscouraged;
+        if (uploadPolicy != UploadPolicy.BLOCKED) {
+            this.uploadPolicy = uploadDiscouraged ? UploadPolicy.DISCOURAGED : UploadPolicy.NORMAL;
+        }
+    }
+
+    /**
+     * Get the upload policy.
+     * @return the upload policy
+     * @see #setUploadPolicy(UploadPolicy)
+     */
+    public UploadPolicy getUploadPolicy() {
+        return this.uploadPolicy;
+    }
+
+    /**
+     * Sets the upload policy.
+     * @param uploadPolicy the upload policy
+     * @see #getUploadPolicy()
+     */
+    public void setUploadPolicy(UploadPolicy uploadPolicy) {
+        this.uploadPolicy = uploadPolicy;
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java b/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java
index 9bdbce0..b67c8a3 100644
--- a/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java
+++ b/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java
@@ -8,6 +8,7 @@ import java.io.StringWriter;
 import java.io.Writer;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -211,7 +212,7 @@ public class DatasetConsistencyTest {
                 writer.println((errorCount - MAX_ERRORS) + " more...");
             }
 
-        } catch (RuntimeException e) {
+        } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
             writer.println("Exception during dataset integrity test:");
             e.printStackTrace(writer);
             Main.warn(e);
diff --git a/src/org/openstreetmap/josm/data/osm/Node.java b/src/org/openstreetmap/josm/data/osm/Node.java
index ab14376..a5a62e5 100644
--- a/src/org/openstreetmap/josm/data/osm/Node.java
+++ b/src/org/openstreetmap/josm/data/osm/Node.java
@@ -402,7 +402,7 @@ public final class Node extends OsmPrimitive implements INode {
         if (otherNodes.contains(this)) {
             return true;
         }
-        if (hops > 0) {
+        if (hops > 0 && visited != null) {
             visited.add(this);
             for (final Way w : Utils.filteredCollection(this.getReferrers(), Way.class)) {
                 for (final Node n : w.getNodes()) {
diff --git a/src/org/openstreetmap/josm/data/osm/NoteData.java b/src/org/openstreetmap/josm/data/osm/NoteData.java
index fe3fecb..469d587 100644
--- a/src/org/openstreetmap/josm/data/osm/NoteData.java
+++ b/src/org/openstreetmap/josm/data/osm/NoteData.java
@@ -25,50 +25,7 @@ public class NoteData {
 
     private final Storage<Note> noteList;
     private Note selectedNote;
-    private Comparator<Note> comparator = DEFAULT_COMPARATOR;
-
-    /**
-     * Sorts notes in the following order:
-     * 1) Open notes
-     * 2) Closed notes
-     * 3) New notes
-     * Within each subgroup it sorts by ID
-     */
-    public static final Comparator<Note> DEFAULT_COMPARATOR = (n1, n2) -> {
-        if (n1.getId() < 0 && n2.getId() > 0) {
-            return 1;
-        }
-        if (n1.getId() > 0 && n2.getId() < 0) {
-            return -1;
-        }
-        if (n1.getState() == State.CLOSED && n2.getState() == State.OPEN) {
-            return 1;
-        }
-        if (n1.getState() == State.OPEN && n2.getState() == State.CLOSED) {
-            return -1;
-        }
-        return Long.compare(Math.abs(n1.getId()), Math.abs(n2.getId()));
-    };
-
-    /** Sorts notes strictly by creation date */
-    public static final Comparator<Note> DATE_COMPARATOR = (n1, n2) -> n1.getCreatedAt().compareTo(n2.getCreatedAt());
-
-    /** Sorts notes by user, then creation date */
-    public static final Comparator<Note> USER_COMPARATOR = (n1, n2) -> {
-        String n1User = n1.getFirstComment().getUser().getName();
-        String n2User = n2.getFirstComment().getUser().getName();
-        if (n1User.equals(n2User)) {
-            return n1.getCreatedAt().compareTo(n2.getCreatedAt());
-        }
-        return n1.getFirstComment().getUser().getName().compareTo(n2.getFirstComment().getUser().getName());
-    };
-
-    /** Sorts notes by the last modified date */
-    public static final Comparator<Note> LAST_ACTION_COMPARATOR = (n1, n2) -> {
-        Date n1Date = n1.getComments().get(n1.getComments().size()-1).getCommentTimestamp();
-        Date n2Date = n2.getComments().get(n2.getComments().size()-1).getCommentTimestamp();
-        return n1Date.compareTo(n2Date);
-    };
+    private Comparator<Note> comparator = Note.DEFAULT_COMPARATOR;
 
     /**
      * Construct a new note container with a given list of notes
diff --git a/src/org/openstreetmap/josm/data/osm/OsmPrimitiveComparator.java b/src/org/openstreetmap/josm/data/osm/OsmPrimitiveComparator.java
index a11f16d..cf8dead 100644
--- a/src/org/openstreetmap/josm/data/osm/OsmPrimitiveComparator.java
+++ b/src/org/openstreetmap/josm/data/osm/OsmPrimitiveComparator.java
@@ -68,6 +68,27 @@ public final class OsmPrimitiveComparator {
         });
     }
 
+    /**
+     * Returns a comparator ordering the primitives by type in the order RELATION, WAY, NODE
+     *
+     * @return a comparator ordering the primitives by type in the order RELATION, WAY, NODE
+     * @since 11679
+     */
+    public static Comparator<OsmPrimitive> orderingRelationsWaysNodes() {
+        return comparingInt(osm -> {
+            switch (osm.getType()) {
+                case RELATION:
+                    return 1;
+                case WAY:
+                    return 2;
+                case NODE:
+                    return 3;
+                default:
+                    throw new IllegalStateException();
+            }
+        });
+    }
+
     private static <T, R> Function<T, R> memoize(Function<T, R> base) {
         final Map<T, R> cache = new HashMap<>();
         return t -> cache.computeIfAbsent(t, base);
diff --git a/src/org/openstreetmap/josm/data/osm/RelationMember.java b/src/org/openstreetmap/josm/data/osm/RelationMember.java
index 879acb1..9e15011 100644
--- a/src/org/openstreetmap/josm/data/osm/RelationMember.java
+++ b/src/org/openstreetmap/josm/data/osm/RelationMember.java
@@ -49,7 +49,7 @@ public class RelationMember implements PrimitiveId {
      * @return True if role is in the given list
      * @since 6305
      */
-    public boolean hasRole(String ... roles) {
+    public boolean hasRole(String... roles) {
         return Arrays.asList(roles).contains(role);
     }
 
diff --git a/src/org/openstreetmap/josm/data/osm/TagMap.java b/src/org/openstreetmap/josm/data/osm/TagMap.java
index c58241c..defdfe1 100644
--- a/src/org/openstreetmap/josm/data/osm/TagMap.java
+++ b/src/org/openstreetmap/josm/data/osm/TagMap.java
@@ -49,7 +49,7 @@ public class TagMap extends AbstractMap<String, String> implements Serializable
          * Create a new {@link TagEntryInterator}
          * @param tags The tags array. It is never changed but should also not be changed by you.
          */
-        TagEntryInterator(String ... tags) {
+        TagEntryInterator(String... tags) {
             super();
             this.tags = tags;
         }
@@ -88,7 +88,7 @@ public class TagMap extends AbstractMap<String, String> implements Serializable
          * Create a new {@link TagEntrySet}
          * @param tags The tags array. It is never changed but should also not be changed by you.
          */
-        TagEntrySet(String ... tags) {
+        TagEntrySet(String... tags) {
             super();
             this.tags = tags;
         }
@@ -141,7 +141,7 @@ public class TagMap extends AbstractMap<String, String> implements Serializable
      * The array that is passed as parameter may not be modified after passing it to this map.
      * @param tags The tags array. It is not modified by this map.
      */
-    public TagMap(String ... tags) {
+    public TagMap(String... tags) {
         if (tags == null || tags.length == 0) {
             this.tags = EMPTY_TAGS;
         } else {
diff --git a/src/org/openstreetmap/josm/data/osm/event/DatasetEventManager.java b/src/org/openstreetmap/josm/data/osm/event/DatasetEventManager.java
index 90c3176..e5aad39 100644
--- a/src/org/openstreetmap/josm/data/osm/event/DatasetEventManager.java
+++ b/src/org/openstreetmap/josm/data/osm/event/DatasetEventManager.java
@@ -85,7 +85,9 @@ public class DatasetEventManager implements ActiveLayerChangeListener, Listener
                 }
 
                 // Fire consolidated event
-                fireConsolidatedEvents(inEDTListeners, consolidatedEvent);
+                if (consolidatedEvent != null) {
+                    fireConsolidatedEvents(inEDTListeners, consolidatedEvent);
+                }
             }
         }
     }
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/paint/OffsetIterator.java b/src/org/openstreetmap/josm/data/osm/visitor/paint/OffsetIterator.java
new file mode 100644
index 0000000..7f1387a
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/OffsetIterator.java
@@ -0,0 +1,168 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data.osm.visitor.paint;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.NoSuchElementException;
+
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.gui.MapViewState;
+import org.openstreetmap.josm.gui.MapViewState.MapViewPoint;
+import org.openstreetmap.josm.tools.Utils;
+
+/**
+ * Iterates over a list of Way Nodes and returns screen coordinates that
+ * represent a line that is shifted by a certain offset perpendicular
+ * to the way direction.
+ *
+ * There is no intention, to handle consecutive duplicate Nodes in a
+ * perfect way, but it should not throw an exception.
+ * @since 11696 made public
+ */
+public class OffsetIterator implements Iterator<MapViewPoint> {
+    private final MapViewState mapState;
+    private final List<Node> nodes;
+    private final double offset;
+    private int idx;
+
+    private MapViewPoint prev;
+    /* 'prev0' is a point that has distance 'offset' from 'prev' and the
+     * line from 'prev' to 'prev0' is perpendicular to the way segment from
+     * 'prev' to the current point.
+     */
+    private double xPrev0;
+    private double yPrev0;
+
+    /**
+     * Creates a new offset iterator
+     * @param mapState The map view state this iterator is for.
+     * @param nodes The nodes of the original line
+     * @param offset The offset of the line.
+     */
+    public OffsetIterator(MapViewState mapState, List<Node> nodes, double offset) {
+        this.mapState = mapState;
+        this.nodes = nodes;
+        this.offset = offset;
+        idx = 0;
+    }
+
+    @Override
+    public boolean hasNext() {
+        return idx < nodes.size();
+    }
+
+    @Override
+    public MapViewPoint next() {
+        if (!hasNext())
+            throw new NoSuchElementException();
+
+        MapViewPoint current = getForIndex(idx);
+
+        if (Math.abs(offset) < 0.1d) {
+            idx++;
+            return current;
+        }
+
+        double xCurrent = current.getInViewX();
+        double yCurrent = current.getInViewY();
+        if (idx == nodes.size() - 1) {
+            ++idx;
+            if (prev != null) {
+                return mapState.getForView(xPrev0 + xCurrent - prev.getInViewX(),
+                                           yPrev0 + yCurrent - prev.getInViewY());
+            } else {
+                return current;
+            }
+        }
+
+        MapViewPoint next = getForIndex(idx + 1);
+        double dxNext = next.getInViewX() - xCurrent;
+        double dyNext = next.getInViewY() - yCurrent;
+        double lenNext = Math.sqrt(dxNext*dxNext + dyNext*dyNext);
+
+        if (lenNext < 1e-11) {
+            lenNext = 1; // value does not matter, because dy_next and dx_next is 0
+        }
+
+        // calculate the position of the translated current point
+        double om = offset / lenNext;
+        double xCurrent0 = xCurrent + om * dyNext;
+        double yCurrent0 = yCurrent - om * dxNext;
+
+        if (idx == 0) {
+            ++idx;
+            prev = current;
+            xPrev0 = xCurrent0;
+            yPrev0 = yCurrent0;
+            return mapState.getForView(xCurrent0, yCurrent0);
+        } else {
+            double dxPrev = xCurrent - prev.getInViewX();
+            double dyPrev = yCurrent - prev.getInViewY();
+            // determine intersection of the lines parallel to the two segments
+            double det = dxNext*dyPrev - dxPrev*dyNext;
+            double m = dxNext*(yCurrent0 - yPrev0) - dyNext*(xCurrent0 - xPrev0);
+
+            if (Utils.equalsEpsilon(det, 0) || Math.signum(det) != Math.signum(m)) {
+                ++idx;
+                prev = current;
+                xPrev0 = xCurrent0;
+                yPrev0 = yCurrent0;
+                return mapState.getForView(xCurrent0, yCurrent0);
+            }
+
+            double f = m / det;
+            if (f < 0) {
+                ++idx;
+                prev = current;
+                xPrev0 = xCurrent0;
+                yPrev0 = yCurrent0;
+                return mapState.getForView(xCurrent0, yCurrent0);
+            }
+            // the position of the intersection or intermittent point
+            double cx = xPrev0 + f * dxPrev;
+            double cy = yPrev0 + f * dyPrev;
+
+            if (f > 1) {
+                // check if the intersection point is too far away, this will happen for sharp angles
+                double dxI = cx - xCurrent;
+                double dyI = cy - yCurrent;
+                double lenISq = dxI * dxI + dyI * dyI;
+
+                if (lenISq > Math.abs(2 * offset * offset)) {
+                    // intersection point is too far away, calculate intermittent points for capping
+                    double dxPrev0 = xCurrent0 - xPrev0;
+                    double dyPrev0 = yCurrent0 - yPrev0;
+                    double lenPrev0 = Math.sqrt(dxPrev0 * dxPrev0 + dyPrev0 * dyPrev0);
+                    f = 1 + Math.abs(offset / lenPrev0);
+                    double cxCap = xPrev0 + f * dxPrev;
+                    double cyCap = yPrev0 + f * dyPrev;
+                    xPrev0 = cxCap;
+                    yPrev0 = cyCap;
+                    // calculate a virtual prev point which lies on a line that goes through current and
+                    // is perpendicular to the line that goes through current and the intersection
+                    // so that the next capping point is calculated with it.
+                    double lenI = Math.sqrt(lenISq);
+                    double xv = xCurrent + dyI / lenI;
+                    double yv = yCurrent - dxI / lenI;
+
+                    prev = mapState.getForView(xv, yv);
+                    return mapState.getForView(cxCap, cyCap);
+                }
+            }
+            ++idx;
+            prev = current;
+            xPrev0 = xCurrent0;
+            yPrev0 = yCurrent0;
+            return mapState.getForView(cx, cy);
+        }
+    }
+
+    private MapViewPoint getForIndex(int i) {
+        return mapState.getPointFor(nodes.get(i));
+    }
+
+    @Override
+    public void remove() {
+        throw new UnsupportedOperationException();
+    }
+}
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/paint/RenderBenchmarkCollector.java b/src/org/openstreetmap/josm/data/osm/visitor/paint/RenderBenchmarkCollector.java
index 3acae15..db96872 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/paint/RenderBenchmarkCollector.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/RenderBenchmarkCollector.java
@@ -36,7 +36,7 @@ public class RenderBenchmarkCollector {
 
     /**
      * Notified when the renderer method starts drawing
-     * @param allStyleElems All the elements that are painted.
+     * @param allStyleElems All the elements that are painted. Unsorted
      * @return <code>true</code> if the renderer should continue to render
      */
     public boolean renderDraw(List<StyleRecord> allStyleElems) {
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java b/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
index 03eb531..53bf94b 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
@@ -28,18 +28,17 @@ import java.awt.image.BufferedImage;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.NoSuchElementException;
 import java.util.Optional;
 import java.util.concurrent.ForkJoinPool;
 import java.util.concurrent.ForkJoinTask;
 import java.util.concurrent.RecursiveTask;
+import java.util.function.BiConsumer;
+import java.util.function.Consumer;
 import java.util.function.Supplier;
-import java.util.stream.Collectors;
 
 import javax.swing.AbstractButton;
 import javax.swing.FocusManager;
@@ -61,14 +60,20 @@ import org.openstreetmap.josm.data.osm.visitor.Visitor;
 import org.openstreetmap.josm.data.osm.visitor.paint.relations.Multipolygon;
 import org.openstreetmap.josm.data.osm.visitor.paint.relations.Multipolygon.PolyData;
 import org.openstreetmap.josm.data.osm.visitor.paint.relations.MultipolygonCache;
+import org.openstreetmap.josm.data.preferences.AbstractProperty;
+import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.data.preferences.IntegerProperty;
+import org.openstreetmap.josm.data.preferences.StringProperty;
 import org.openstreetmap.josm.gui.MapViewState.MapViewPoint;
 import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.gui.draw.MapViewPath;
+import org.openstreetmap.josm.gui.draw.MapViewPositionAndRotation;
 import org.openstreetmap.josm.gui.mappaint.ElemStyles;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
 import org.openstreetmap.josm.gui.mappaint.StyleElementList;
 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
 import org.openstreetmap.josm.gui.mappaint.styleelement.AreaElement;
+import org.openstreetmap.josm.gui.mappaint.styleelement.AreaIconElement;
 import org.openstreetmap.josm.gui.mappaint.styleelement.BoxTextElement;
 import org.openstreetmap.josm.gui.mappaint.styleelement.BoxTextElement.HorizontalTextAlignment;
 import org.openstreetmap.josm.gui.mappaint.styleelement.BoxTextElement.VerticalTextAlignment;
@@ -77,11 +82,14 @@ import org.openstreetmap.josm.gui.mappaint.styleelement.NodeElement;
 import org.openstreetmap.josm.gui.mappaint.styleelement.RepeatImageElement.LineImageAlignment;
 import org.openstreetmap.josm.gui.mappaint.styleelement.StyleElement;
 import org.openstreetmap.josm.gui.mappaint.styleelement.Symbol;
+import org.openstreetmap.josm.gui.mappaint.styleelement.TextElement;
 import org.openstreetmap.josm.gui.mappaint.styleelement.TextLabel;
+import org.openstreetmap.josm.gui.mappaint.styleelement.placement.PositionForAreaStrategy;
 import org.openstreetmap.josm.tools.CompositeList;
 import org.openstreetmap.josm.tools.Geometry;
 import org.openstreetmap.josm.tools.Geometry.AreaAndPerimeter;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
 
@@ -95,155 +103,6 @@ public class StyledMapRenderer extends AbstractMapRenderer {
             Utils.newForkJoinPool("mappaint.StyledMapRenderer.style_creation.numberOfThreads", "styled-map-renderer-%d", Thread.NORM_PRIORITY);
 
     /**
-     * Iterates over a list of Way Nodes and returns screen coordinates that
-     * represent a line that is shifted by a certain offset perpendicular
-     * to the way direction.
-     *
-     * There is no intention, to handle consecutive duplicate Nodes in a
-     * perfect way, but it should not throw an exception.
-     */
-    private class OffsetIterator implements Iterator<MapViewPoint> {
-
-        private final List<Node> nodes;
-        private final double offset;
-        private int idx;
-
-        private MapViewPoint prev;
-        /* 'prev0' is a point that has distance 'offset' from 'prev' and the
-         * line from 'prev' to 'prev0' is perpendicular to the way segment from
-         * 'prev' to the current point.
-         */
-        private double xPrev0;
-        private double yPrev0;
-
-        OffsetIterator(List<Node> nodes, double offset) {
-            this.nodes = nodes;
-            this.offset = offset;
-            idx = 0;
-        }
-
-        @Override
-        public boolean hasNext() {
-            return idx < nodes.size();
-        }
-
-        @Override
-        public MapViewPoint next() {
-            if (!hasNext())
-                throw new NoSuchElementException();
-
-            MapViewPoint current = getForIndex(idx);
-
-            if (Math.abs(offset) < 0.1d) {
-                idx++;
-                return current;
-            }
-
-            double xCurrent = current.getInViewX();
-            double yCurrent = current.getInViewY();
-            if (idx == nodes.size() - 1) {
-                ++idx;
-                if (prev != null) {
-                    return mapState.getForView(xPrev0 + xCurrent - prev.getInViewX(),
-                                               yPrev0 + yCurrent - prev.getInViewY());
-                } else {
-                    return current;
-                }
-            }
-
-            MapViewPoint next = getForIndex(idx + 1);
-            double dxNext = next.getInViewX() - xCurrent;
-            double dyNext = next.getInViewY() - yCurrent;
-            double lenNext = Math.sqrt(dxNext*dxNext + dyNext*dyNext);
-
-            if (lenNext < 1e-11) {
-                lenNext = 1; // value does not matter, because dy_next and dx_next is 0
-            }
-
-            // calculate the position of the translated current point
-            double om = offset / lenNext;
-            double xCurrent0 = xCurrent + om * dyNext;
-            double yCurrent0 = yCurrent - om * dxNext;
-
-            if (idx == 0) {
-                ++idx;
-                prev = current;
-                xPrev0 = xCurrent0;
-                yPrev0 = yCurrent0;
-                return mapState.getForView(xCurrent0, yCurrent0);
-            } else {
-                double dxPrev = xCurrent - prev.getInViewX();
-                double dyPrev = yCurrent - prev.getInViewY();
-                // determine intersection of the lines parallel to the two segments
-                double det = dxNext*dyPrev - dxPrev*dyNext;
-                double m = dxNext*(yCurrent0 - yPrev0) - dyNext*(xCurrent0 - xPrev0);
-
-                if (Utils.equalsEpsilon(det, 0) || Math.signum(det) != Math.signum(m)) {
-                    ++idx;
-                    prev = current;
-                    xPrev0 = xCurrent0;
-                    yPrev0 = yCurrent0;
-                    return mapState.getForView(xCurrent0, yCurrent0);
-                }
-
-                double f = m / det;
-                if (f < 0) {
-                    ++idx;
-                    prev = current;
-                    xPrev0 = xCurrent0;
-                    yPrev0 = yCurrent0;
-                    return mapState.getForView(xCurrent0, yCurrent0);
-                }
-                // the position of the intersection or intermittent point
-                double cx = xPrev0 + f * dxPrev;
-                double cy = yPrev0 + f * dyPrev;
-
-                if (f > 1) {
-                    // check if the intersection point is too far away, this will happen for sharp angles
-                    double dxI = cx - xCurrent;
-                    double dyI = cy - yCurrent;
-                    double lenISq = dxI * dxI + dyI * dyI;
-
-                    if (lenISq > Math.abs(2 * offset * offset)) {
-                        // intersection point is too far away, calculate intermittent points for capping
-                        double dxPrev0 = xCurrent0 - xPrev0;
-                        double dyPrev0 = yCurrent0 - yPrev0;
-                        double lenPrev0 = Math.sqrt(dxPrev0 * dxPrev0 + dyPrev0 * dyPrev0);
-                        f = 1 + Math.abs(offset / lenPrev0);
-                        double cxCap = xPrev0 + f * dxPrev;
-                        double cyCap = yPrev0 + f * dyPrev;
-                        xPrev0 = cxCap;
-                        yPrev0 = cyCap;
-                        // calculate a virtual prev point which lies on a line that goes through current and
-                        // is perpendicular to the line that goes through current and the intersection
-                        // so that the next capping point is calculated with it.
-                        double lenI = Math.sqrt(lenISq);
-                        double xv = xCurrent + dyI / lenI;
-                        double yv = yCurrent - dxI / lenI;
-
-                        prev = mapState.getForView(xv, yv);
-                        return mapState.getForView(cxCap, cyCap);
-                    }
-                }
-                ++idx;
-                prev = current;
-                xPrev0 = xCurrent0;
-                yPrev0 = yCurrent0;
-                return mapState.getForView(cx, cy);
-            }
-        }
-
-        private MapViewPoint getForIndex(int i) {
-            return mapState.getPointFor(nodes.get(i));
-        }
-
-        @Override
-        public void remove() {
-            throw new UnsupportedOperationException();
-        }
-    }
-
-    /**
      * This stores a style and a primitive that should be painted with that style.
      */
     public static class StyleRecord implements Comparable<StyleRecord> {
@@ -408,14 +267,33 @@ public class StyledMapRenderer extends AbstractMapRenderer {
     private static final double PHI = Math.toRadians(20);
     private static final double cosPHI = Math.cos(PHI);
     private static final double sinPHI = Math.sin(PHI);
+    /**
+     * If we should use left hand traffic.
+     */
+    private static final AbstractProperty<Boolean> PREFERENCE_LEFT_HAND_TRAFFIC
+            = new BooleanProperty("mappaint.lefthandtraffic", false).cached();
+    /**
+     * Indicates that the renderer should enable anti-aliasing
+     * @since 11758
+     */
+    public static final AbstractProperty<Boolean> PREFERENCE_ANTIALIASING_USE
+            = new BooleanProperty("mappaint.use-antialiasing", true).cached();
+    /**
+     * The mode that is used for anti-aliasing
+     * @since 11758
+     */
+    public static final AbstractProperty<String> PREFERENCE_TEXT_ANTIALIASING
+            = new StringProperty("mappaint.text-antialiasing", "default").cached();
 
-    private Collection<WaySegment> highlightWaySegments;
+    /**
+     * The line with to use for highlighting
+     */
+    private static final AbstractProperty<Integer> HIGHLIGHT_LINE_WIDTH = new IntegerProperty("mappaint.highlight.width", 4).cached();
+    private static final AbstractProperty<Integer> HIGHLIGHT_POINT_RADIUS = new IntegerProperty("mappaint.highlight.radius", 7).cached();
+    private static final AbstractProperty<Integer> WIDER_HIGHLIGHT = new IntegerProperty("mappaint.highlight.bigger-increment", 5).cached();
+    private static final AbstractProperty<Integer> HIGHLIGHT_STEP = new IntegerProperty("mappaint.highlight.step", 4).cached();
 
-    // highlight customization fields
-    private int highlightLineWidth;
-    private int highlightPointRadius;
-    private int widerHighlight;
-    private int highlightStep;
+    private Collection<WaySegment> highlightWaySegments;
 
     //flag that activate wider highlight mode
     private boolean useWiderHighlight;
@@ -425,8 +303,6 @@ public class StyledMapRenderer extends AbstractMapRenderer {
     private boolean showIcons;
     private boolean isOutlineOnly;
 
-    private Font orderFont;
-
     private boolean leftHandTraffic;
     private Object antialiasing;
 
@@ -484,55 +360,8 @@ public class StyledMapRenderer extends AbstractMapRenderer {
     }
 
     /**
-     * Displays text at specified position including its halo, if applicable.
-     *
-     * @param gv Text's glyphs to display. If {@code null}, use text from {@code s} instead.
-     * @param s text to display if {@code gv} is {@code null}
-     * @param x X position
-     * @param y Y position
-     * @param disabled {@code true} if element is disabled (filtered out)
-     * @param text text style to use
-     */
-    private void displayText(GlyphVector gv, String s, int x, int y, boolean disabled, TextLabel text) {
-        if (gv == null && s.isEmpty()) return;
-        if (isInactiveMode || disabled) {
-            g.setColor(inactiveColor);
-            if (gv != null) {
-                g.drawGlyphVector(gv, x, y);
-            } else {
-                g.setFont(text.font);
-                g.drawString(s, x, y);
-            }
-        } else if (text.haloRadius != null) {
-            g.setStroke(new BasicStroke(2*text.haloRadius, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND));
-            g.setColor(text.haloColor);
-            Shape textOutline;
-            if (gv == null) {
-                FontRenderContext frc = g.getFontRenderContext();
-                TextLayout tl = new TextLayout(s, text.font, frc);
-                textOutline = tl.getOutline(AffineTransform.getTranslateInstance(x, y));
-            } else {
-                textOutline = gv.getOutline(x, y);
-            }
-            g.draw(textOutline);
-            g.setStroke(new BasicStroke());
-            g.setColor(text.color);
-            g.fill(textOutline);
-        } else {
-            g.setColor(text.color);
-            if (gv != null) {
-                g.drawGlyphVector(gv, x, y);
-            } else {
-                g.setFont(text.font);
-                g.drawString(s, x, y);
-            }
-        }
-    }
-
-    /**
      * Worker function for drawing areas.
      *
-     * @param osm the primitive
      * @param path the path object for the area that should be drawn; in case
      * of multipolygons, this can path can be a complex shape with one outer
      * polygon and one or more inner polygons
@@ -544,14 +373,12 @@ public class StyledMapRenderer extends AbstractMapRenderer {
      * @param pfClip clipping area for partial fill (only needed for unclosed
      * polygons)
      * @param disabled If this should be drawn with a special disabled style.
-     * @param text The text to write on the area.
+     * @param text Ignored. Use {@link #drawText(OsmPrimitive, TextLabel)} instead.
      */
-    protected void drawArea(OsmPrimitive osm, Path2D.Double path, Color color,
+    protected void drawArea(MapViewPath path, Color color,
             MapImage fillImage, Float extent, Path2D.Double pfClip, boolean disabled, TextLabel text) {
-
-        Shape area = path.createTransformedShape(mapState.getAffineTransform());
-
-        if (!isOutlineOnly) {
+        if (!isOutlineOnly && color.getAlpha() != 0) {
+            Shape area = path;
             g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
             if (fillImage == null) {
                 if (isInactiveMode) {
@@ -596,84 +423,6 @@ public class StyledMapRenderer extends AbstractMapRenderer {
             }
             g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, antialiasing);
         }
-
-        drawAreaText(osm, text, area);
-    }
-
-    private void drawAreaText(OsmPrimitive osm, TextLabel text, Shape area) {
-        if (text != null && isShowNames()) {
-            // abort if we can't compose the label to be rendered
-            if (text.labelCompositionStrategy == null) return;
-            String name = text.labelCompositionStrategy.compose(osm);
-            if (name == null) return;
-
-            Rectangle pb = area.getBounds();
-            FontMetrics fontMetrics = g.getFontMetrics(orderFont); // if slow, use cache
-            Rectangle2D nb = fontMetrics.getStringBounds(name, g); // if slow, approximate by strlen()*maxcharbounds(font)
-
-            // Using the Centroid is Nicer for buildings like: +--------+
-            // but this needs to be fast.  As most houses are  |   42   |
-            // boxes anyway, the center of the bounding box    +---++---+
-            // will have to do.                                    ++
-            // Centroids are not optimal either, just imagine a U-shaped house.
-
-            // quick check to see if label box is smaller than primitive box
-            if (pb.width >= nb.getWidth() && pb.height >= nb.getHeight()) {
-
-                final double w = pb.width - nb.getWidth();
-                final double h = pb.height - nb.getHeight();
-
-                final int x2 = pb.x + (int) (w/2.0);
-                final int y2 = pb.y + (int) (h/2.0);
-
-                final int nbw = (int) nb.getWidth();
-                final int nbh = (int) nb.getHeight();
-
-                Rectangle centeredNBounds = new Rectangle(x2, y2, nbw, nbh);
-
-                // slower check to see if label is displayed inside primitive shape
-                boolean labelOK = area.contains(centeredNBounds);
-                if (!labelOK) {
-                    // if center position (C) is not inside osm shape, try naively some other positions as follows:
-                    // CHECKSTYLE.OFF: SingleSpaceSeparator
-                    final int x1 = pb.x + (int)   (w/4.0);
-                    final int x3 = pb.x + (int) (3*w/4.0);
-                    final int y1 = pb.y + (int)   (h/4.0);
-                    final int y3 = pb.y + (int) (3*h/4.0);
-                    // CHECKSTYLE.ON: SingleSpaceSeparator
-                    // +-----------+
-                    // |  5  1  6  |
-                    // |  4  C  2  |
-                    // |  8  3  7  |
-                    // +-----------+
-                    Rectangle[] candidates = new Rectangle[] {
-                            new Rectangle(x2, y1, nbw, nbh),
-                            new Rectangle(x3, y2, nbw, nbh),
-                            new Rectangle(x2, y3, nbw, nbh),
-                            new Rectangle(x1, y2, nbw, nbh),
-                            new Rectangle(x1, y1, nbw, nbh),
-                            new Rectangle(x3, y1, nbw, nbh),
-                            new Rectangle(x3, y3, nbw, nbh),
-                            new Rectangle(x1, y3, nbw, nbh)
-                    };
-                    // Dumb algorithm to find a better placement. We could surely find a smarter one but it should
-                    // solve most of building issues with only few calculations (8 at most)
-                    for (int i = 0; i < candidates.length && !labelOK; i++) {
-                        centeredNBounds = candidates[i];
-                        labelOK = area.contains(centeredNBounds);
-                    }
-                }
-                if (labelOK) {
-                    Font defaultFont = g.getFont();
-                    int x = (int) (centeredNBounds.getMinX() - nb.getMinX());
-                    int y = (int) (centeredNBounds.getMinY() - nb.getMinY());
-                    displayText(null, name, x, y, osm.isDisabled(), text);
-                    g.setFont(defaultFont);
-                } else if (Main.isTraceEnabled()) {
-                    Main.trace("Couldn't find a correct label placement for "+osm+" / "+name);
-                }
-            }
-        }
     }
 
     /**
@@ -690,14 +439,16 @@ public class StyledMapRenderer extends AbstractMapRenderer {
      * @param text The text to write on the area.
      */
     public void drawArea(Relation r, Color color, MapImage fillImage, Float extent, Float extentThreshold, boolean disabled, TextLabel text) {
-        Multipolygon multipolygon = MultipolygonCache.getInstance().get(nc, r);
+        Multipolygon multipolygon = MultipolygonCache.getInstance().get(r);
         if (!r.isDisabled() && !multipolygon.getOuterWays().isEmpty()) {
             for (PolyData pd : multipolygon.getCombinedPolygons()) {
-                Path2D.Double p = pd.get();
-                Path2D.Double pfClip = null;
-                if (!isAreaVisible(p)) {
+                if (!isAreaVisible(pd.get())) {
                     continue;
                 }
+                MapViewPath p = new MapViewPath(mapState);
+                p.appendFromEastNorth(pd.get());
+                p.setWindingRule(Path2D.WIND_EVEN_ODD);
+                Path2D.Double pfClip = null;
                 if (extent != null) {
                     if (!usePartialFill(pd.getAreaAndPerimeter(null), extent, extentThreshold)) {
                         extent = null;
@@ -705,7 +456,7 @@ public class StyledMapRenderer extends AbstractMapRenderer {
                         pfClip = getPFClip(pd, extent * scale);
                     }
                 }
-                drawArea(r, p,
+                drawArea(p,
                         pd.isSelected() ? paintSettings.getRelationSelectedColor(color.getAlpha()) : color,
                         fillImage, extent, pfClip, disabled, text);
             }
@@ -734,7 +485,7 @@ public class StyledMapRenderer extends AbstractMapRenderer {
                 pfClip = getPFClip(w, extent * scale);
             }
         }
-        drawArea(w, getPath(w), color, fillImage, extent, pfClip, disabled, text);
+        drawArea(getPath(w), color, fillImage, extent, pfClip, disabled, text);
     }
 
     /**
@@ -767,13 +518,16 @@ public class StyledMapRenderer extends AbstractMapRenderer {
         MapViewPoint p = mapState.getPointFor(n);
         TextLabel text = bs.text;
         String s = text.labelCompositionStrategy.compose(n);
-        if (s == null) return;
+        if (s == null || s.isEmpty()) return;
 
         Font defaultFont = g.getFont();
         g.setFont(text.font);
 
-        int x = (int) (Math.round(p.getInViewX()) + text.xOffset);
-        int y = (int) (Math.round(p.getInViewY()) + text.yOffset);
+        FontRenderContext frc = g.getFontRenderContext();
+        Rectangle2D bounds = text.font.getStringBounds(s, frc);
+
+        double x = Math.round(p.getInViewX()) + text.xOffset + bounds.getCenterX();
+        double y = Math.round(p.getInViewY()) + text.yOffset + bounds.getCenterY();
         /**
          *
          *       left-above __center-above___ right-above
@@ -789,8 +543,6 @@ public class StyledMapRenderer extends AbstractMapRenderer {
         if (bs.hAlign == HorizontalTextAlignment.RIGHT) {
             x += box.x + box.width + 2;
         } else {
-            FontRenderContext frc = g.getFontRenderContext();
-            Rectangle2D bounds = text.font.getStringBounds(s, frc);
             int textWidth = (int) bounds.getWidth();
             if (bs.hAlign == HorizontalTextAlignment.CENTER) {
                 x -= textWidth / 2;
@@ -802,7 +554,6 @@ public class StyledMapRenderer extends AbstractMapRenderer {
         if (bs.vAlign == VerticalTextAlignment.BOTTOM) {
             y += box.y + box.height;
         } else {
-            FontRenderContext frc = g.getFontRenderContext();
             LineMetrics metrics = text.font.getLineMetrics(s, frc);
             if (bs.vAlign == VerticalTextAlignment.ABOVE) {
                 y -= -box.y + (int) metrics.getDescent();
@@ -814,7 +565,8 @@ public class StyledMapRenderer extends AbstractMapRenderer {
                 y += box.y + box.height + (int) metrics.getAscent() + 2;
             } else throw new AssertionError();
         }
-        displayText(null, s, x, y, n.isDisabled(), text);
+
+        displayText(n, text, s, bounds, new MapViewPositionAndRotation(mapState.getForView(x, y), 0));
         g.setFont(defaultFont);
     }
 
@@ -838,7 +590,7 @@ public class StyledMapRenderer extends AbstractMapRenderer {
         int dy1 = (int) ((align.getAlignmentOffset() - .5) * imgHeight);
         int dy2 = dy1 + imgHeight;
 
-        OffsetIterator it = new OffsetIterator(way.getNodes(), offset);
+        OffsetIterator it = new OffsetIterator(mapState, way.getNodes(), offset);
         MapViewPath path = new MapViewPath(mapState);
         if (it.hasNext()) {
             path.moveTo(it.next());
@@ -931,6 +683,50 @@ public class StyledMapRenderer extends AbstractMapRenderer {
             drawPointHighlight(p.getInView(), Math.max(w, h));
         }
 
+        drawIcon(p, img, disabled, selected, member, theta, (g, r) -> {
+            Color color = getSelectionHintColor(disabled, selected);
+            g.setColor(color);
+            g.draw(r);
+        });
+    }
+
+
+    /**
+     * Draw the icon for a given area. Normally, the icon is drawn around the center of the area.
+     * @param osm The primitive to draw the icon for
+     * @param img The icon to draw
+     * @param disabled {@code} true to render disabled version, {@code false} for the standard version
+     * @param selected {@code} true to render it as selected, {@code false} otherwise
+     * @param member {@code} true to render it as a relation member, {@code false} otherwise
+     * @param theta the angle of rotation in radians
+     * @param iconPosition Where to place the icon.
+     * @since 11670
+     */
+    public void drawAreaIcon(OsmPrimitive osm, MapImage img, boolean disabled, boolean selected, boolean member, double theta,
+            PositionForAreaStrategy iconPosition) {
+        Rectangle2D.Double iconRect = new Rectangle2D.Double(-img.getWidth() / 2.0, -img.getHeight() / 2.0, img.getWidth(), img.getHeight());
+
+        forEachPolygon(osm, path -> {
+            MapViewPositionAndRotation placement = iconPosition.findLabelPlacement(path, iconRect);
+            if (placement == null) {
+                return;
+            }
+            MapViewPoint p = placement.getPoint();
+            drawIcon(p, img, disabled, selected, member, theta + placement.getRotation(), (g, r) -> {
+                if (useStrokes) {
+                    g.setStroke(new BasicStroke(2));
+                }
+                // only draw a minor highlighting, so that users do not confuse this for a point.
+                Color color = getSelectionHintColor(disabled, selected);
+                color = new Color(color.getRed(), color.getGreen(), color.getBlue(), (int) (color.getAlpha() * .2));
+                g.setColor(color);
+                g.draw(r);
+            });
+        });
+    }
+
+    private void drawIcon(MapViewPoint p, MapImage img, boolean disabled, boolean selected, boolean member, double theta,
+            BiConsumer<Graphics2D, Rectangle2D> selectionDrawer) {
         float alpha = img.getAlphaFloat();
 
         Graphics2D temporaryGraphics = (Graphics2D) g.create();
@@ -942,21 +738,24 @@ public class StyledMapRenderer extends AbstractMapRenderer {
         double y = Math.round(p.getInViewY());
         temporaryGraphics.translate(x, y);
         temporaryGraphics.rotate(theta);
-        int drawX = -w/2 + img.offsetX;
-        int drawY = -h/2 + img.offsetY;
+        int drawX = -img.getWidth() / 2 + img.offsetX;
+        int drawY = -img.getHeight() / 2 + img.offsetY;
         temporaryGraphics.drawImage(img.getImage(disabled), drawX, drawY, nc);
         if (selected || member) {
-            Color color;
-            if (disabled) {
-                color = inactiveColor;
-            } else if (selected) {
-                color = selectedColor;
-            } else {
-                color = relationSelectedColor;
-            }
-            temporaryGraphics.setColor(color);
-            temporaryGraphics.draw(new Rectangle2D.Double(drawX - 2, drawY - 2, w + 4, h + 4));
+            selectionDrawer.accept(temporaryGraphics, new Rectangle2D.Double(drawX - 2, drawY - 2, img.getWidth() + 4, img.getHeight() + 4));
+        }
+    }
+
+    private Color getSelectionHintColor(boolean disabled, boolean selected) {
+        Color color;
+        if (disabled) {
+            color = inactiveColor;
+        } else if (selected) {
+            color = selectedColor;
+        } else {
+            color = relationSelectedColor;
         }
+        return color;
     }
 
     /**
@@ -1006,7 +805,7 @@ public class StyledMapRenderer extends AbstractMapRenderer {
 
     /**
      * highlights a given GeneralPath using the settings from BasicStroke to match the line's
-     * style. Width of the highlight is hard coded.
+     * style. Width of the highlight can be changed by user preferences
      * @param path path to draw
      * @param line line style
      */
@@ -1014,12 +813,15 @@ public class StyledMapRenderer extends AbstractMapRenderer {
         if (path == null)
             return;
         g.setColor(highlightColorTransparent);
-        float w = line.getLineWidth() + highlightLineWidth;
-        if (useWiderHighlight) w += widerHighlight;
+        float w = line.getLineWidth() + HIGHLIGHT_LINE_WIDTH.get();
+        if (useWiderHighlight) {
+            w += WIDER_HIGHLIGHT.get();
+        }
+        int step = Math.max(HIGHLIGHT_STEP.get(), 1);
         while (w >= line.getLineWidth()) {
             g.setStroke(new BasicStroke(w, line.getEndCap(), line.getLineJoin(), line.getMiterLimit()));
             g.draw(path);
-            w -= highlightStep;
+            w -= step;
         }
     }
 
@@ -1031,12 +833,15 @@ public class StyledMapRenderer extends AbstractMapRenderer {
      */
     private void drawPointHighlight(Point2D p, int size) {
         g.setColor(highlightColorTransparent);
-        int s = size + highlightPointRadius;
-        if (useWiderHighlight) s += widerHighlight;
+        int s = size + HIGHLIGHT_POINT_RADIUS.get();
+        if (useWiderHighlight) {
+            s += WIDER_HIGHLIGHT.get();
+        }
+        int step = Math.max(HIGHLIGHT_STEP.get(), 1);
         while (s >= size) {
             int r = (int) Math.floor(s/2d);
             g.fill(new RoundRectangle2D.Double(p.getX()-r, p.getY()-r, s, s, r, r));
-            s -= highlightStep;
+            s -= step;
         }
     }
 
@@ -1221,188 +1026,128 @@ public class StyledMapRenderer extends AbstractMapRenderer {
     }
 
     /**
-     * A half segment that can be used to place text on it. Used in the drawTextOnPath algorithm.
-     * @author Michael Zangl
+     * Draws a text for the given primitive
+     * @param osm The primitive to draw the text for
+     * @param text The text definition (font/position/.../text content) to draw.
+     * @since 11722
      */
-    private static class HalfSegment {
-        /**
-         * start point of half segment (as length along the way)
-         */
-        final double start;
-        /**
-         * end point of half segment (as length along the way)
-         */
-        final double end;
-        /**
-         * quality factor (off screen / partly on screen / fully on screen)
-         */
-        final double quality;
-
-        /**
-         * Create a new half segment
-         * @param start The start along the way
-         * @param end The end of the segment
-         * @param quality A quality factor.
-         */
-        HalfSegment(double start, double end, double quality) {
-            super();
-            this.start = start;
-            this.end = end;
-            this.quality = quality;
-        }
-
-        @Override
-        public String toString() {
-            return "HalfSegment [start=" + start + ", end=" + end + ", quality=" + quality + "]";
-        }
-    }
-
-    /**
-     * Draws a text along a given way.
-     * @param way The way to draw the text on.
-     * @param text The text definition (font/.../text content) to draw.
-     */
-    public void drawTextOnPath(Way way, TextLabel text) {
-        if (way == null || text == null)
-            return;
-        String name = text.getString(way);
-        if (name == null || name.isEmpty())
+    public void drawText(OsmPrimitive osm, TextLabel text) {
+        if (!isShowNames()) {
             return;
-
-        FontMetrics fontMetrics = g.getFontMetrics(text.font);
-        Rectangle2D rec = fontMetrics.getStringBounds(name, g);
-
-        Rectangle bounds = g.getClipBounds();
-
-        List<MapViewPoint> points = way.getNodes().stream().map(mapState::getPointFor).collect(Collectors.toList());
-
-        // find half segments that are long enough to draw text on (don't draw text over the cross hair in the center of each segment)
-        List<HalfSegment> longHalfSegment = new ArrayList<>();
-
-        double pathLength = computePath(2 * (rec.getWidth() + 4), bounds, points, longHalfSegment);
-
-        if (rec.getWidth() > pathLength)
+        }
+        String name = text.getString(osm);
+        if (name == null || name.isEmpty()) {
             return;
-
-        double t1, t2;
-
-        if (!longHalfSegment.isEmpty()) {
-            // find the segment with the best quality. If there are several with best quality, the one close to the center is prefered.
-            Optional<HalfSegment> besto = longHalfSegment.stream().max(
-                    Comparator.comparingDouble(segment ->
-                        segment.quality - 1e-5 * Math.abs(0.5 * (segment.end + segment.start) - 0.5 * pathLength)
-                    ));
-            if (!besto.isPresent())
-                throw new IllegalStateException("Unable to find the segment with the best quality for " + way);
-            HalfSegment best = besto.get();
-            double remaining = best.end - best.start - rec.getWidth(); // total space left and right from the text
-            // The space left and right of the text should be distributed 20% - 80% (towards the center),
-            // but the smaller space should not be less than 7 px.
-            // However, if the total remaining space is less than 14 px, then distribute it evenly.
-            double smallerSpace = Math.min(Math.max(0.2 * remaining, 7), 0.5 * remaining);
-            if ((best.end + best.start)/2 < pathLength/2) {
-                t2 = best.end - smallerSpace;
-                t1 = t2 - rec.getWidth();
-            } else {
-                t1 = best.start + smallerSpace;
-                t2 = t1 + rec.getWidth();
-            }
-        } else {
-            // doesn't fit into one half-segment -> just put it in the center of the way
-            t1 = pathLength/2 - rec.getWidth()/2;
-            t2 = pathLength/2 + rec.getWidth()/2;
         }
-        t1 /= pathLength;
-        t2 /= pathLength;
 
-        double[] p1 = pointAt(t1, points, pathLength);
-        double[] p2 = pointAt(t2, points, pathLength);
+        FontMetrics fontMetrics = g.getFontMetrics(text.font); // if slow, use cache
+        Rectangle2D nb = fontMetrics.getStringBounds(name, g); // if slow, approximate by strlen()*maxcharbounds(font)
 
-        if (p1 == null || p2 == null)
-            return;
+        Font defaultFont = g.getFont();
+        forEachPolygon(osm, path -> {
+            //TODO: Ignore areas that are out of bounds.
+            PositionForAreaStrategy position = text.getLabelPositionStrategy();
+            MapViewPositionAndRotation center = position.findLabelPlacement(path, nb);
+            if (center != null) {
+                displayText(osm, text, name, nb, center);
+            } else if (position.supportsGlyphVector()) {
+                List<GlyphVector> gvs = Utils.getGlyphVectorsBidi(name, text.font, g.getFontRenderContext());
+
+                List<GlyphVector> translatedGvs = position.generateGlyphVectors(path, nb, gvs, isGlyphVectorDoubleTranslationBug(text.font));
+                displayText(() -> translatedGvs.forEach(gv -> g.drawGlyphVector(gv, 0, 0)),
+                        () -> translatedGvs.stream().collect(
+                                Path2D.Double::new,
+                                (p, gv) -> p.append(gv.getOutline(0, 0), false),
+                                (p1, p2) -> p1.append(p2, false)),
+                        osm.isDisabled(), text);
+            } else if (Main.isTraceEnabled()) {
+                Main.trace("Couldn't find a correct label placement for " + osm + " / " + name);
+            }
+        });
+        g.setFont(defaultFont);
+    }
 
-        double angleOffset;
-        double offsetSign;
-        double tStart;
+    private void displayText(OsmPrimitive osm, TextLabel text, String name, Rectangle2D nb,
+            MapViewPositionAndRotation center) {
+        AffineTransform at = new AffineTransform();
+        if (Math.abs(center.getRotation()) < .01) {
+            // Explicitly no rotation: move to full pixels.
+            at.setToTranslation(Math.round(center.getPoint().getInViewX() - nb.getCenterX()),
+                    Math.round(center.getPoint().getInViewY() - nb.getCenterY()));
+        } else {
+            at.setToTranslation(center.getPoint().getInViewX(), center.getPoint().getInViewY());
+            at.rotate(center.getRotation());
+            at.translate(-nb.getCenterX(), -nb.getCenterY());
+        }
+        displayText(() -> {
+            AffineTransform defaultTransform = g.getTransform();
+            g.setTransform(at);
+            g.setFont(text.font);
+            g.drawString(name, 0, 0);
+            g.setTransform(defaultTransform);
+        }, () -> {
+            FontRenderContext frc = g.getFontRenderContext();
+            TextLayout tl = new TextLayout(name, text.font, frc);
+            return tl.getOutline(at);
+        }, osm.isDisabled(), text);
+    }
 
-        if (p1[0] < p2[0] &&
-                p1[2] < Math.PI/2 &&
-                p1[2] > -Math.PI/2) {
-            angleOffset = 0;
-            offsetSign = 1;
-            tStart = t1;
+    /**
+     * Displays text at specified position including its halo, if applicable.
+     *
+     * @param fill The function that fills the text
+     * @param outline The function to draw the outline
+     * @param disabled {@code true} if element is disabled (filtered out)
+     * @param text text style to use
+     */
+    private void displayText(Runnable fill, Supplier<Shape> outline, boolean disabled, TextLabel text) {
+        if (isInactiveMode || disabled) {
+            g.setColor(inactiveColor);
+            fill.run();
+        } else if (text.haloRadius != null) {
+            g.setStroke(new BasicStroke(2*text.haloRadius, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND));
+            g.setColor(text.haloColor);
+            Shape textOutline = outline.get();
+            g.draw(textOutline);
+            g.setStroke(new BasicStroke());
+            g.setColor(text.color);
+            g.fill(textOutline);
         } else {
-            angleOffset = Math.PI;
-            offsetSign = -1;
-            tStart = t2;
-        }
-
-        List<GlyphVector> gvs = Utils.getGlyphVectorsBidi(name, text.font, g.getFontRenderContext());
-        double gvOffset = 0;
-        for (GlyphVector gv : gvs) {
-            double gvWidth = gv.getLogicalBounds().getBounds2D().getWidth();
-            for (int i = 0; i < gv.getNumGlyphs(); ++i) {
-                Rectangle2D rect = gv.getGlyphLogicalBounds(i).getBounds2D();
-                double t = tStart + offsetSign * (gvOffset + rect.getX() + rect.getWidth()/2) / pathLength;
-                double[] p = pointAt(t, points, pathLength);
-                if (p != null) {
-                    AffineTransform trfm = AffineTransform.getTranslateInstance(p[0] - rect.getX(), p[1]);
-                    trfm.rotate(p[2]+angleOffset);
-                    double off = -rect.getY() - rect.getHeight()/2 + text.yOffset;
-                    trfm.translate(-rect.getWidth()/2, off);
-                    if (isGlyphVectorDoubleTranslationBug(text.font)) {
-                        // scale the translation components by one half
-                        AffineTransform tmp = AffineTransform.getTranslateInstance(-0.5 * trfm.getTranslateX(), -0.5 * trfm.getTranslateY());
-                        tmp.concatenate(trfm);
-                        trfm = tmp;
-                    }
-                    gv.setGlyphTransform(i, trfm);
-                }
-            }
-            displayText(gv, null, 0, 0, way.isDisabled(), text);
-            gvOffset += gvWidth;
+            g.setColor(text.color);
+            fill.run();
         }
     }
 
-    private static double computePath(double minSegmentLength, Rectangle bounds, List<MapViewPoint> points,
-            List<HalfSegment> longHalfSegment) {
-        MapViewPoint lastPoint = points.get(0);
-        double pathLength = 0;
-        for (MapViewPoint p : points.subList(1, points.size())) {
-            double segmentLength = p.distanceToInView(lastPoint);
-            if (segmentLength > minSegmentLength) {
-                Point2D center = new Point2D.Double((lastPoint.getInViewX() + p.getInViewX())/2, (lastPoint.getInViewY() + p.getInViewY())/2);
-                double q = computeQuality(bounds, lastPoint, center);
-                // prefer the first one for quality equality.
-                longHalfSegment.add(new HalfSegment(pathLength, pathLength + segmentLength / 2, q));
-
-                q = 0;
-                if (bounds != null) {
-                    if (bounds.contains(center) && bounds.contains(p.getInView())) {
-                        q = 2;
-                    } else if (bounds.contains(center) || bounds.contains(p.getInView())) {
-                        q = 1;
-                    }
+    /**
+     * Calls a consumer for each path of the area shape-
+     * @param osm A way or a multipolygon
+     * @param consumer The consumer to call.
+     */
+    private void forEachPolygon(OsmPrimitive osm, Consumer<MapViewPath> consumer) {
+        if (osm instanceof Way) {
+            consumer.accept(getPath((Way) osm));
+        } else if (osm instanceof Relation) {
+            Multipolygon multipolygon = MultipolygonCache.getInstance().get((Relation) osm);
+            if (!multipolygon.getOuterWays().isEmpty()) {
+                for (PolyData pd : multipolygon.getCombinedPolygons()) {
+                    MapViewPath path = new MapViewPath(mapState);
+                    path.appendFromEastNorth(pd.get());
+                    path.setWindingRule(MapViewPath.WIND_EVEN_ODD);
+                    consumer.accept(path);
                 }
-                longHalfSegment.add(new HalfSegment(pathLength + segmentLength / 2, pathLength + segmentLength, q));
             }
-            pathLength += segmentLength;
-            lastPoint = p;
         }
-        return pathLength;
     }
 
-    private static double computeQuality(Rectangle bounds, MapViewPoint p1, Point2D p2) {
-        double q = 0;
-        if (bounds != null) {
-            if (bounds.contains(p1.getInView())) {
-                q += 1;
-            }
-            if (bounds.contains(p2)) {
-                q += 1;
-            }
-        }
-        return q;
+    /**
+     * Draws a text along a given way.
+     * @param way The way to draw the text on.
+     * @param text The text definition (font/.../text content) to draw.
+     * @deprecated Use {@link #drawText(OsmPrimitive, TextLabel)} instead.
+     */
+    @Deprecated
+    public void drawTextOnPath(Way way, TextLabel text) {
+        // NOP.
     }
 
     /**
@@ -1456,7 +1201,7 @@ public class StyledMapRenderer extends AbstractMapRenderer {
         }
 
         MapViewPoint lastPoint = null;
-        Iterator<MapViewPoint> it = new OffsetIterator(wayNodes, offset);
+        Iterator<MapViewPoint> it = new OffsetIterator(mapState, wayNodes, offset);
         boolean initialMoveToNeeded = true;
         while (it.hasNext()) {
             MapViewPoint p = it.next();
@@ -1552,20 +1297,19 @@ public class StyledMapRenderer extends AbstractMapRenderer {
         circum = nc.getDist100Pixel();
         scale = nc.getScale();
 
-        leftHandTraffic = Main.pref.getBoolean("mappaint.lefthandtraffic", false);
+        leftHandTraffic = PREFERENCE_LEFT_HAND_TRAFFIC.get();
 
         useStrokes = paintSettings.getUseStrokesDistance() > circum;
         showNames = paintSettings.getShowNamesDistance() > circum;
         showIcons = paintSettings.getShowIconsDistance() > circum;
         isOutlineOnly = paintSettings.isOutlineOnly();
-        orderFont = new Font(Main.pref.get("mappaint.font", "Droid Sans"), Font.PLAIN, Main.pref.getInteger("mappaint.fontsize", 8));
 
-        antialiasing = Main.pref.getBoolean("mappaint.use-antialiasing", true) ?
+        antialiasing = PREFERENCE_ANTIALIASING_USE.get() ?
                         RenderingHints.VALUE_ANTIALIAS_ON : RenderingHints.VALUE_ANTIALIAS_OFF;
         g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, antialiasing);
 
         Object textAntialiasing;
-        switch (Main.pref.get("mappaint.text-antialiasing", "default")) {
+        switch (PREFERENCE_TEXT_ANTIALIASING.get()) {
             case "on":
                 textAntialiasing = RenderingHints.VALUE_TEXT_ANTIALIAS_ON;
                 break;
@@ -1591,29 +1335,14 @@ public class StyledMapRenderer extends AbstractMapRenderer {
                 textAntialiasing = RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT;
         }
         g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, textAntialiasing);
-
-        highlightLineWidth = Main.pref.getInteger("mappaint.highlight.width", 4);
-        highlightPointRadius = Main.pref.getInteger("mappaint.highlight.radius", 7);
-        widerHighlight = Main.pref.getInteger("mappaint.highlight.bigger-increment", 5);
-        highlightStep = Main.pref.getInteger("mappaint.highlight.step", 4);
     }
 
-    private static Path2D.Double getPath(Way w) {
-        Path2D.Double path = new Path2D.Double();
-        boolean initial = true;
-        for (Node n : w.getNodes()) {
-            EastNorth p = n.getEastNorth();
-            if (p != null) {
-                if (initial) {
-                    path.moveTo(p.getX(), p.getY());
-                    initial = false;
-                } else {
-                    path.lineTo(p.getX(), p.getY());
-                }
-            }
-        }
+    private MapViewPath getPath(Way w) {
+        MapViewPath path = new MapViewPath(mapState);
         if (w.isClosed()) {
-            path.closePath();
+            path.appendClosed(w.getNodes(), false);
+        } else {
+            path.append(w.getNodes(), false);
         }
         return path;
     }
@@ -1747,30 +1476,6 @@ public class StyledMapRenderer extends AbstractMapRenderer {
         return showNames;
     }
 
-    private static double[] pointAt(double t, List<MapViewPoint> poly, double pathLength) {
-        double totalLen = t * pathLength;
-        double curLen = 0;
-        double dx, dy;
-        double segLen;
-
-        // Yes, it is inefficient to iterate from the beginning for each glyph.
-        // Can be optimized if it turns out to be slow.
-        for (int i = 1; i < poly.size(); ++i) {
-            dx = poly.get(i).getInViewX() - poly.get(i - 1).getInViewX();
-            dy = poly.get(i).getInViewY() - poly.get(i - 1).getInViewY();
-            segLen = Math.sqrt(dx*dx + dy*dy);
-            if (totalLen > curLen + segLen) {
-                curLen += segLen;
-                continue;
-            }
-            return new double[] {
-                    poly.get(i - 1).getInViewX() + (totalLen - curLen) / segLen * dx,
-                    poly.get(i - 1).getInViewY() + (totalLen - curLen) / segLen * dy,
-                    Math.atan2(dy, dx)};
-        }
-        return null;
-    }
-
     /**
      * Computes the flags for a given OSM primitive.
      * @param primitive The primititve to compute the flags for.
@@ -1850,7 +1555,7 @@ public class StyledMapRenderer extends AbstractMapRenderer {
                     acceptDrawable(osm);
                 }
                 return output;
-            } catch (RuntimeException e) {
+            } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
                 throw BugReport.intercept(e).put("input-size", input.size()).put("output-size", output.size());
             } finally {
                 MapCSSStyleSource.STYLE_SOURCE_LOCK.readLock().unlock();
@@ -1862,7 +1567,7 @@ public class StyledMapRenderer extends AbstractMapRenderer {
                 if (osm.isDrawable()) {
                     osm.accept(this);
                 }
-            } catch (RuntimeException e) {
+            } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
                 throw BugReport.intercept(e).put("osm", osm);
             }
         }
@@ -1897,7 +1602,9 @@ public class StyledMapRenderer extends AbstractMapRenderer {
         public void add(Relation osm, int flags) {
             StyleElementList sl = styles.get(osm, circum, nc);
             for (StyleElement s : sl) {
-                if (drawMultipolygon && drawArea && s instanceof AreaElement && (flags & FLAG_DISABLED) == 0) {
+                if (drawMultipolygon && drawArea && (s instanceof AreaElement || s instanceof AreaIconElement) && (flags & FLAG_DISABLED) == 0) {
+                    output.add(new StyleRecord(s, osm, flags));
+                } else if (drawMultipolygon && drawArea && s instanceof TextElement) {
                     output.add(new StyleRecord(s, osm, flags));
                 } else if (drawRestriction && s instanceof NodeElement) {
                     output.add(new StyleRecord(s, osm, flags));
@@ -1908,10 +1615,9 @@ public class StyledMapRenderer extends AbstractMapRenderer {
         public void add(Way osm, int flags) {
             StyleElementList sl = styles.get(osm, circum, nc);
             for (StyleElement s : sl) {
-                if (!(drawArea && (flags & FLAG_DISABLED) == 0) && s instanceof AreaElement) {
-                    continue;
+                if ((drawArea && (flags & FLAG_DISABLED) == 0) || !(s instanceof AreaElement)) {
+                    output.add(new StyleRecord(s, osm, flags));
                 }
-                output.add(new StyleRecord(s, osm, flags));
             }
         }
     }
@@ -1968,7 +1674,7 @@ public class StyledMapRenderer extends AbstractMapRenderer {
             drawVirtualNodes(data, bbox);
 
             benchmark.renderDone();
-        } catch (RuntimeException e) {
+        } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
             throw BugReport.intercept(e)
                     .put("data", data)
                     .put("circum", circum)
@@ -1983,7 +1689,7 @@ public class StyledMapRenderer extends AbstractMapRenderer {
     private void paintRecord(StyleRecord record) {
         try {
             record.paintPrimitive(paintSettings, this);
-        } catch (RuntimeException e) {
+        } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
             throw BugReport.intercept(e).put("record", record);
         }
     }
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/MultipolygonCache.java b/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/MultipolygonCache.java
index 9ad9eaa..a235b3c 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/MultipolygonCache.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/MultipolygonCache.java
@@ -27,7 +27,6 @@ import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
 import org.openstreetmap.josm.data.osm.visitor.paint.relations.Multipolygon.PolyData;
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.data.projection.ProjectionChangeListener;
-import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
@@ -42,7 +41,7 @@ public final class MultipolygonCache implements DataSetListener, LayerChangeList
 
     private static final MultipolygonCache INSTANCE = new MultipolygonCache();
 
-    private final Map<NavigatableComponent, Map<DataSet, Map<Relation, Multipolygon>>> cache;
+    private final Map<DataSet, Map<Relation, Multipolygon>> cache;
 
     private final Collection<PolyData> selectedPolyData;
 
@@ -64,33 +63,28 @@ public final class MultipolygonCache implements DataSetListener, LayerChangeList
 
     /**
      * Gets a multipolygon from cache.
-     * @param nc The navigatable component
      * @param r The multipolygon relation
      * @return A multipolygon object for the given relation, or {@code null}
+     * @since 11779
      */
-    public Multipolygon get(NavigatableComponent nc, Relation r) {
-        return get(nc, r, false);
+    public Multipolygon get(Relation r) {
+        return get(r, false);
     }
 
     /**
      * Gets a multipolygon from cache.
-     * @param nc The navigatable component
      * @param r The multipolygon relation
      * @param forceRefresh if {@code true}, a new object will be created even of present in cache
      * @return A multipolygon object for the given relation, or {@code null}
+     * @since 11779
      */
-    public Multipolygon get(NavigatableComponent nc, Relation r, boolean forceRefresh) {
+    public Multipolygon get(Relation r, boolean forceRefresh) {
         Multipolygon multipolygon = null;
-        if (nc != null && r != null) {
-            Map<DataSet, Map<Relation, Multipolygon>> map1 = cache.get(nc);
-            if (map1 == null) {
-                map1 = new ConcurrentHashMap<>();
-                cache.put(nc, map1);
-            }
-            Map<Relation, Multipolygon> map2 = map1.get(r.getDataSet());
+        if (r != null) {
+            Map<Relation, Multipolygon> map2 = cache.get(r.getDataSet());
             if (map2 == null) {
                 map2 = new ConcurrentHashMap<>();
-                map1.put(r.getDataSet(), map2);
+                cache.put(r.getDataSet(), map2);
             }
             multipolygon = map2.get(r);
             if (multipolygon == null || forceRefresh) {
@@ -107,26 +101,13 @@ public final class MultipolygonCache implements DataSetListener, LayerChangeList
     }
 
     /**
-     * Clears the cache for the given navigatable component.
-     * @param nc the navigatable component
-     */
-    public void clear(NavigatableComponent nc) {
-        Map<DataSet, Map<Relation, Multipolygon>> map = cache.remove(nc);
-        if (map != null) {
-            map.clear();
-        }
-    }
-
-    /**
      * Clears the cache for the given dataset.
      * @param ds the data set
      */
     public void clear(DataSet ds) {
-        for (Map<DataSet, Map<Relation, Multipolygon>> map1 : cache.values()) {
-            Map<Relation, Multipolygon> map2 = map1.remove(ds);
-            if (map2 != null) {
-                map2.clear();
-            }
+        Map<Relation, Multipolygon> map2 = cache.remove(ds);
+        if (map2 != null) {
+            map2.clear();
         }
     }
 
@@ -139,11 +120,9 @@ public final class MultipolygonCache implements DataSetListener, LayerChangeList
 
     private Collection<Map<Relation, Multipolygon>> getMapsFor(DataSet ds) {
         List<Map<Relation, Multipolygon>> result = new ArrayList<>();
-        for (Map<DataSet, Map<Relation, Multipolygon>> map : cache.values()) {
-            Map<Relation, Multipolygon> map2 = map.get(ds);
-            if (map2 != null) {
-                result.add(map2);
-            }
+        Map<Relation, Multipolygon> map2 = cache.get(ds);
+        if (map2 != null) {
+            result.add(map2);
         }
         return result;
     }
diff --git a/src/org/openstreetmap/josm/data/preferences/PreferencesWriter.java b/src/org/openstreetmap/josm/data/preferences/PreferencesWriter.java
index d35dbba..cdfd5a9 100644
--- a/src/org/openstreetmap/josm/data/preferences/PreferencesWriter.java
+++ b/src/org/openstreetmap/josm/data/preferences/PreferencesWriter.java
@@ -87,7 +87,7 @@ public class PreferencesWriter extends XmlWriter implements SettingVisitor {
         } else if (defaults) {
             addDefaults();
         } else {
-            throw new NullPointerException();
+            throw new IllegalArgumentException(setting.toString());
         }
     }
 
@@ -104,7 +104,7 @@ public class PreferencesWriter extends XmlWriter implements SettingVisitor {
         } else if (defaults) {
             addDefaults();
         } else {
-            throw new NullPointerException();
+            throw new IllegalArgumentException(setting.toString());
         }
     }
 
@@ -125,7 +125,7 @@ public class PreferencesWriter extends XmlWriter implements SettingVisitor {
         } else if (defaults) {
             addDefaults();
         } else {
-            throw new NullPointerException();
+            throw new IllegalArgumentException(setting.toString());
         }
     }
 
@@ -146,7 +146,7 @@ public class PreferencesWriter extends XmlWriter implements SettingVisitor {
         } else if (defaults) {
             addDefaults();
         } else {
-            throw new NullPointerException();
+            throw new IllegalArgumentException(setting.toString());
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/data/projection/CustomProjection.java b/src/org/openstreetmap/josm/data/projection/CustomProjection.java
index 654db71..c58a776 100644
--- a/src/org/openstreetmap/josm/data/projection/CustomProjection.java
+++ b/src/org/openstreetmap/josm/data/projection/CustomProjection.java
@@ -31,6 +31,7 @@ import org.openstreetmap.josm.data.projection.proj.IScaleFactorProvider;
 import org.openstreetmap.josm.data.projection.proj.Mercator;
 import org.openstreetmap.josm.data.projection.proj.Proj;
 import org.openstreetmap.josm.data.projection.proj.ProjParameters;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
 
@@ -830,7 +831,7 @@ public class CustomProjection extends AbstractProjection {
                             polesEN.put(p, enPole);
                         }
                     }
-                } catch (RuntimeException e) {
+                } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
                     Main.error(e);
                 }
             }
diff --git a/src/org/openstreetmap/josm/data/projection/Ellipsoid.java b/src/org/openstreetmap/josm/data/projection/Ellipsoid.java
index 4ea41db..ab54860 100644
--- a/src/org/openstreetmap/josm/data/projection/Ellipsoid.java
+++ b/src/org/openstreetmap/josm/data/projection/Ellipsoid.java
@@ -321,7 +321,7 @@ public final class Ellipsoid {
      * @param xyz the coordinates in meters (X, Y, Z)
      * @return The corresponding latitude and longitude in degrees
      */
-    public LatLon cart2LatLon(double ... xyz) {
+    public LatLon cart2LatLon(double... xyz) {
         return cart2LatLon(xyz, 1e-11);
     }
 
diff --git a/src/org/openstreetmap/josm/data/projection/Projections.java b/src/org/openstreetmap/josm/data/projection/Projections.java
index 5ff8014..8a17dfc 100644
--- a/src/org/openstreetmap/josm/data/projection/Projections.java
+++ b/src/org/openstreetmap/josm/data/projection/Projections.java
@@ -49,8 +49,7 @@ import org.openstreetmap.josm.tools.Utils;
 /**
  * Class to manage projections.
  *
- * Use this class to query available projection or register new projections
- * from a plugin.
+ * Use this class to query available projection or register new projections from a plugin.
  */
 public final class Projections {
 
@@ -58,10 +57,16 @@ public final class Projections {
      * Class to hold information about one projection.
      */
     public static class ProjectionDefinition {
-        public String code;
-        public String name;
-        public String definition;
-
+        public final String code;
+        public final String name;
+        public final String definition;
+
+        /**
+         * Constructs a new {@code ProjectionDefinition}.
+         * @param code EPSG code
+         * @param name projection name
+         * @param definition projection definition (EPSG format)
+         */
         public ProjectionDefinition(String code, String name, String definition) {
             this.code = code;
             this.name = name;
@@ -140,19 +145,15 @@ public final class Projections {
                 "Potsdam Rauenberg 1950 DHDN", "potsdam",
                 Ellipsoid.Bessel1841, 598.1, 73.7, 418.2, 0.202, 0.045, -2.455, 6.7));
 
-        nadgrids.put("BETA2007.gsb", NTV2GridShiftFileWrapper.BETA2007);
-        nadgrids.put("ntf_r93_b.gsb", NTV2GridShiftFileWrapper.ntf_rgf93);
-
-        List<ProjectionDefinition> pds;
         try {
-            pds = loadProjectionDefinitions("resource://data/projection/custom-epsg");
+            inits = new LinkedHashMap<>();
+            for (ProjectionDefinition pd : loadProjectionDefinitions("resource://data/projection/custom-epsg")) {
+                inits.put(pd.code, pd);
+                loadNadgrids(pd.definition);
+            }
         } catch (IOException ex) {
             throw new JosmRuntimeException(ex);
         }
-        inits = new LinkedHashMap<>();
-        for (ProjectionDefinition pd : pds) {
-            inits.put(pd.code, pd);
-        }
 
         for (ProjectionChoice pc : ProjectionPreference.getProjectionChoices()) {
             for (String code : pc.allCodes()) {
@@ -167,6 +168,23 @@ public final class Projections {
         // Hide default constructor for utils classes
     }
 
+    private static void loadNadgrids(String definition) {
+        final String key = CustomProjection.Param.nadgrids.key;
+        if (definition.contains(key)) {
+            try {
+                String nadgridsId = CustomProjection.parseParameterList(definition, true).get(key);
+                if (nadgridsId.startsWith("@")) {
+                    nadgridsId = nadgridsId.substring(1);
+                }
+                if (!"null".equals(nadgridsId) && !nadgrids.containsKey(nadgridsId)) {
+                    nadgrids.put(nadgridsId, new NTV2GridShiftFileWrapper(nadgridsId));
+                }
+            } catch (ProjectionConfigurationException e) {
+                Main.trace(e);
+            }
+        }
+    }
+
     /**
      * Convert from lat/lon to easting/northing using the current projection.
      *
@@ -319,7 +337,7 @@ public final class Projections {
             pc.setPreferences(pref);
             try {
                 proj = pc.getProjection();
-            } catch (RuntimeException e) {
+            } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
                 Main.warn(e, "Unable to get projection "+code+" with "+pc+':');
             }
         }
diff --git a/src/org/openstreetmap/josm/data/projection/datum/NTV2Datum.java b/src/org/openstreetmap/josm/data/projection/datum/NTV2Datum.java
index dd427b8..b71cf5a 100644
--- a/src/org/openstreetmap/josm/data/projection/datum/NTV2Datum.java
+++ b/src/org/openstreetmap/josm/data/projection/datum/NTV2Datum.java
@@ -1,16 +1,26 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.data.projection.datum;
 
+import java.io.IOException;
+
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.projection.Ellipsoid;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
 
 /**
  * Datum based of NTV2 grid shift file.
  */
 public class NTV2Datum extends AbstractDatum {
 
-    protected NTV2GridShiftFileWrapper nadgrids;
+    private final NTV2GridShiftFileWrapper nadgrids;
 
+    /**
+     * Constructs a new {@code NTV2Datum}.
+     * @param name datum name
+     * @param proj4Id PROJ.4 id
+     * @param ellps ellipsoid
+     * @param nadgrids NTV2 grid shift file wrapper
+     */
     public NTV2Datum(String name, String proj4Id, Ellipsoid ellps, NTV2GridShiftFileWrapper nadgrids) {
         super(name, proj4Id, ellps);
         this.nadgrids = nadgrids;
@@ -19,14 +29,22 @@ public class NTV2Datum extends AbstractDatum {
     @Override
     public LatLon toWGS84(LatLon ll) {
         NTV2GridShift gs = new NTV2GridShift(ll);
-        nadgrids.getShiftFile().gridShiftForward(gs);
-        return new LatLon(ll.lat() + gs.getLatShiftDegrees(), ll.lon() + gs.getLonShiftPositiveEastDegrees());
+        try {
+            nadgrids.getShiftFile().gridShiftForward(gs);
+            return new LatLon(ll.lat() + gs.getLatShiftDegrees(), ll.lon() + gs.getLonShiftPositiveEastDegrees());
+        } catch (IOException e) {
+            throw new JosmRuntimeException(e);
+        }
     }
 
     @Override
     public LatLon fromWGS84(LatLon ll) {
         NTV2GridShift gs = new NTV2GridShift(ll);
-        nadgrids.getShiftFile().gridShiftReverse(gs);
-        return new LatLon(ll.lat() + gs.getLatShiftDegrees(), ll.lon() + gs.getLonShiftPositiveEastDegrees());
+        try {
+            nadgrids.getShiftFile().gridShiftReverse(gs);
+            return new LatLon(ll.lat() + gs.getLatShiftDegrees(), ll.lon() + gs.getLonShiftPositiveEastDegrees());
+        } catch (IOException e) {
+            throw new JosmRuntimeException(e);
+        }
     }
 }
diff --git a/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java b/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java
index 5a140cb..ff2f7fb 100644
--- a/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java
+++ b/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java
@@ -166,7 +166,7 @@ public class NTV2GridShiftFile implements Serializable {
      * @param subGrid an array of all Sub Grids
      * @return an array of top level Sub Grids with lower level Sub Grids set.
      */
-    private static NTV2SubGrid[] createSubGridTree(NTV2SubGrid ... subGrid) {
+    private static NTV2SubGrid[] createSubGridTree(NTV2SubGrid... subGrid) {
         int topLevelCount = 0;
         Map<String, List<NTV2SubGrid>> subGridMap = new HashMap<>();
         for (int i = 0; i < subGrid.length; i++) {
diff --git a/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFileWrapper.java b/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFileWrapper.java
index f427ba5..e526c50 100644
--- a/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFileWrapper.java
+++ b/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFileWrapper.java
@@ -1,11 +1,12 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.data.projection.datum;
 
+import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.io.CachedFile;
-import org.openstreetmap.josm.tools.JosmRuntimeException;
 
 /**
  * Wrapper for {@link NTV2GridShiftFile}.
@@ -15,26 +16,6 @@ import org.openstreetmap.josm.tools.JosmRuntimeException;
  */
 public class NTV2GridShiftFileWrapper {
 
-    // CHECKSTYLE.OFF: LineLength
-
-    /**
-     * Used in Germany to convert coordinates between the DHDN (<i>Deutsches Hauptdreiecksnetz</i>)
-     * and ETRS89 (<i>European Terrestrial Reference System 1989</i>) datums.
-     * @see <a href="http://crs.bkg.bund.de/crseu/crs/descrtrans/eu-descrtrans.php?crs_id=REVfREhETiAvIEdLXzM=&op_id=REVfREhETiAoQmVUQSwgMjAwNykgdG8gRVRSUzg5">
-     * Description of Transformation - DE_DHDN (BeTA, 2007) to ETRS89</a>
-     */
-    public static final NTV2GridShiftFileWrapper BETA2007 = new NTV2GridShiftFileWrapper("resource://data/projection/BETA2007.gsb");
-
-    /**
-     * Used in France to convert coordinates between the NTF (<i>Nouvelle triangulation de la France</i>)
-     * and RGF93 (<i>Réseau géodésique français 1993</i>) datums.
-     * @see <a href="http://geodesie.ign.fr/contenu/fichiers/documentation/algorithmes/notice/NT111_V1_HARMEL_TransfoNTF-RGF93_FormatGrilleNTV2.pdf">
-     * [French] Transformation de coordonnées NTF – RGF93 / Format de grille NTv2</a>
-     */
-    public static final NTV2GridShiftFileWrapper ntf_rgf93 = new NTV2GridShiftFileWrapper("resource://data/projection/ntf_r93_b.gsb");
-
-    // CHECKSTYLE.ON: LineLength
-
     private NTV2GridShiftFile instance;
     private final String gridFileName;
 
@@ -50,14 +31,39 @@ public class NTV2GridShiftFileWrapper {
      * Returns the actual {@link NTV2GridShiftFile} behind this wrapper.
      * The grid file is only loaded once, when first accessed.
      * @return The NTv2 grid file
+     * @throws IOException if the grid file cannot be found/loaded
      */
-    public NTV2GridShiftFile getShiftFile() {
+    public synchronized NTV2GridShiftFile getShiftFile() throws IOException {
         if (instance == null) {
-            try (CachedFile cf = new CachedFile(gridFileName); InputStream is = cf.getInputStream()) {
-                instance = new NTV2GridShiftFile();
-                instance.loadGridShiftFile(is, false);
-            } catch (IOException e) {
-                throw new JosmRuntimeException(e);
+            File grid = null;
+            // Check is the grid is installed in default PROJ.4 directories
+            for (File dir : Main.platform.getDefaultProj4NadshiftDirectories()) {
+                File file = new File(dir, gridFileName);
+                if (file.exists() && file.isFile()) {
+                    grid = file;
+                    break;
+                }
+            }
+            // If not, search into PROJ_LIB directory
+            if (grid == null) {
+                String projLib = System.getProperty("PROJ_LIB");
+                if (projLib != null && !projLib.isEmpty()) {
+                    File dir = new File(projLib);
+                    if (dir.exists() && dir.isDirectory()) {
+                        File file = new File(dir, gridFileName);
+                        if (file.exists() && file.isFile()) {
+                            grid = file;
+                        }
+                    }
+                }
+            }
+            // If not, retrieve it from JOSM website
+            String location = grid != null ? grid.getAbsolutePath() : (Main.getJOSMWebsite() + "/proj/" + gridFileName);
+            // Try to load grid file
+            try (CachedFile cf = new CachedFile(location); InputStream is = cf.getInputStream()) {
+                NTV2GridShiftFile ntv2 = new NTV2GridShiftFile();
+                ntv2.loadGridShiftFile(is, false);
+                instance = ntv2;
             }
         }
         return instance;
diff --git a/src/org/openstreetmap/josm/data/projection/datum/NTV2SubGrid.java b/src/org/openstreetmap/josm/data/projection/datum/NTV2SubGrid.java
index 400f14a..1e762c0 100644
--- a/src/org/openstreetmap/josm/data/projection/datum/NTV2SubGrid.java
+++ b/src/org/openstreetmap/josm/data/projection/datum/NTV2SubGrid.java
@@ -280,7 +280,7 @@ public class NTV2SubGrid implements Serializable {
      * Set an array of Sub Grids of this sub grid
      * @param subGrid subgrids
      */
-    public void setSubGridArray(NTV2SubGrid ... subGrid) {
+    public void setSubGridArray(NTV2SubGrid... subGrid) {
         this.subGrid = Utils.copyArray(subGrid);
     }
 
diff --git a/src/org/openstreetmap/josm/data/projection/proj/SwissObliqueMercator.java b/src/org/openstreetmap/josm/data/projection/proj/SwissObliqueMercator.java
index 2d20afd..d1f27a7 100644
--- a/src/org/openstreetmap/josm/data/projection/proj/SwissObliqueMercator.java
+++ b/src/org/openstreetmap/josm/data/projection/proj/SwissObliqueMercator.java
@@ -108,7 +108,7 @@ public class SwissObliqueMercator extends AbstractProj {
         // iteration to finds S and phi
         while (abs(phi - prevPhi) > EPSILON) {
             if (++iteration > 30)
-                throw new JosmRuntimeException("Two many iterations");
+                throw new JosmRuntimeException("Too many iterations");
             prevPhi = phi;
             double s = 1 / alpha * (log(tan(PI / 4 + b / 2)) - k) + ellps.e
             * log(tan(PI / 4 + asin(ellps.e * sin(phi)) / 2));
diff --git a/src/org/openstreetmap/josm/data/validation/OsmValidator.java b/src/org/openstreetmap/josm/data/validation/OsmValidator.java
index 18b592c..9aff42f 100644
--- a/src/org/openstreetmap/josm/data/validation/OsmValidator.java
+++ b/src/org/openstreetmap/josm/data/validation/OsmValidator.java
@@ -332,7 +332,7 @@ public final class OsmValidator {
                 if (test.enabled) {
                     test.initialize();
                 }
-            } catch (Exception e) {
+            } catch (Exception e) { // NOPMD
                 Main.error(e);
                 if (!GraphicsEnvironment.isHeadless()) {
                     JOptionPane.showMessageDialog(Main.parent,
diff --git a/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java b/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java
index 261b5fc..e5863bd 100644
--- a/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java
+++ b/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java
@@ -1924,7 +1924,7 @@ public final class DomainValidator extends AbstractValidator {
      * @throws IllegalArgumentException if one of the read-only tables is requested
      * @since 1.5.0
      */
-    public static synchronized void updateTLDOverride(ArrayType table, String ... tlds) {
+    public static synchronized void updateTLDOverride(ArrayType table, String... tlds) {
         if (inUse) {
             throw new IllegalStateException("Can only invoke this method before calling getInstance");
         }
diff --git a/src/org/openstreetmap/josm/data/validation/routines/RegexValidator.java b/src/org/openstreetmap/josm/data/validation/routines/RegexValidator.java
index 16afa15..440864a 100644
--- a/src/org/openstreetmap/josm/data/validation/routines/RegexValidator.java
+++ b/src/org/openstreetmap/josm/data/validation/routines/RegexValidator.java
@@ -101,7 +101,7 @@ public class RegexValidator extends AbstractValidator {
      * @param regexs The set of regular expressions this validator will
      * validate against
      */
-    public RegexValidator(String ... regexs) {
+    public RegexValidator(String... regexs) {
         this(regexs, true);
     }
 
diff --git a/src/org/openstreetmap/josm/data/validation/routines/UrlValidator.java b/src/org/openstreetmap/josm/data/validation/routines/UrlValidator.java
index 5667b63..f41fc32 100644
--- a/src/org/openstreetmap/josm/data/validation/routines/UrlValidator.java
+++ b/src/org/openstreetmap/josm/data/validation/routines/UrlValidator.java
@@ -217,7 +217,7 @@ public class UrlValidator extends AbstractValidator {
      *        be specified. Setting the ALLOW_ALL_SCHEMES option will
      *        ignore the contents of schemes.
      */
-    public UrlValidator(String ... schemes) {
+    public UrlValidator(String... schemes) {
         this(schemes, 0L);
     }
 
diff --git a/src/org/openstreetmap/josm/data/validation/routines/package.html b/src/org/openstreetmap/josm/data/validation/routines/package.html
index 9376db7..f4ff06c 100644
--- a/src/org/openstreetmap/josm/data/validation/routines/package.html
+++ b/src/org/openstreetmap/josm/data/validation/routines/package.html
@@ -59,7 +59,7 @@
 <h1>2. Validators</h1>
 
 <a name="other.overview"></a>
-<h3>2.1 Overview</h3>
+<h2>2.1 Overview</h2>
 <p>
    This section lists other available validators.
 </p>
@@ -77,7 +77,7 @@
 </ul>
 
 <a name="other.regex"></a>
-<h3>2.2 Regular Expression Validation</h3>
+<h2>2.2 Regular Expression Validation</h2>
 <p>
    Regular expression validation can be done either by using the <i>static</i>
    methods provied by <a href="RegexValidator.html">RegexValidator</a> or
@@ -158,7 +158,7 @@
 </p>
 
 <a name="other.inet"></a>
-<h3>2.3 IP Address Validation</h3>
+<h2>2.3 IP Address Validation</h2>
 
 <p>
     <a href="InetAddressValidator.html">InetAddressValidator</a> provides
@@ -180,7 +180,7 @@
 </pre>
 
 <a name="other.email"></a>
-<h3>2.4 Email Address Validation</h3>
+<h2>2.4 Email Address Validation</h2>
 
 <p>
     <a href="EmailValidator.html">EmailValidator</a> provides email address
@@ -204,7 +204,7 @@
 </pre>
 
 <a name="other.url"></a>
-<h3>2.5 URL Validation</h3>
+<h2>2.5 URL Validation</h2>
 
 <p>
     <a href="UrlValidator.html">UrlValidator</a> provides URL validation by
@@ -245,7 +245,7 @@
 </pre>
 
 <a name="other.domain"></a>
-<h3>2.6 Domain Name Validation</h3>
+<h2>2.6 Domain Name Validation</h2>
 
 <p>
     <a href="DomainValidator.html">DomainValidator</a> provides validation of Internet
diff --git a/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java b/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java
index 5382f60..b9fd3c5 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java
@@ -77,16 +77,16 @@ public class ConditionalKeys extends Test.TagTest {
         return isKeyValid3Parts(parts) || isKeyValid1Part(parts) || isKeyValid2Parts(parts);
     }
 
-    private static boolean isKeyValid3Parts(String ... parts) {
+    private static boolean isKeyValid3Parts(String... parts) {
         return parts.length == 3 && isRestrictionType(parts[0]) && isTransportationMode(parts[1]) && isDirection(parts[2]);
     }
 
-    private static boolean isKeyValid2Parts(String ... parts) {
+    private static boolean isKeyValid2Parts(String... parts) {
         return parts.length == 2 && ((isRestrictionType(parts[0]) && (isTransportationMode(parts[1]) || isDirection(parts[1])))
                                   || (isTransportationMode(parts[0]) && isDirection(parts[1])));
     }
 
-    private static boolean isKeyValid1Part(String ... parts) {
+    private static boolean isKeyValid1Part(String... parts) {
         return parts.length == 1 && (isRestrictionType(parts[0]) || isTransportationMode(parts[0]));
     }
 
diff --git a/src/org/openstreetmap/josm/data/validation/tests/DuplicateRelation.java b/src/org/openstreetmap/josm/data/validation/tests/DuplicateRelation.java
index cf4d354..0adb6d1 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/DuplicateRelation.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/DuplicateRelation.java
@@ -224,7 +224,7 @@ public class DuplicateRelation extends Test {
 
     @Override
     public void visit(Relation r) {
-        if (!r.isUsable() || r.hasIncompleteMembers())
+        if (!r.isUsable() || r.hasIncompleteMembers() || "tmc".equals(r.get("type")) || "TMC".equals(r.get("type")))
             return;
         List<RelationMember> rMembers = r.getMembers();
         Map<String, String> rkeys = r.getKeys();
diff --git a/src/org/openstreetmap/josm/data/validation/tests/Highways.java b/src/org/openstreetmap/josm/data/validation/tests/Highways.java
index e385baa..a3ba0e6 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/Highways.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/Highways.java
@@ -258,8 +258,10 @@ public class Highways extends Test {
                         .primitives(p)
                         .build());
             }
-            // TODO: Check coherence of context against maxspeed
-            // TODO: Check coherence of context against highway
+            if (testContextHighway) {
+                // TODO: Check coherence of context against maxspeed
+                // TODO: Check coherence of context against highway
+            }
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java b/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java
index 9f7fab9..f62f82e 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java
@@ -113,7 +113,7 @@ public class MultipolygonTest extends Test {
 
     @Override
     public void visit(Way w) {
-        if (!w.isArea() && ElemStyles.hasOnlyAreaElemStyle(w)) {
+        if (!w.isArea() && ElemStyles.hasOnlyAreaOrTextStyleElements(w)) {
             List<Node> nodes = w.getNodes();
             if (nodes.isEmpty()) return; // fix zero nodes bug
             for (String key : keysCheckedByAnotherTest) {
@@ -157,7 +157,7 @@ public class MultipolygonTest extends Test {
             }
         }
         errors.add(TestError.builder(this, Severity.WARNING, MISSING_OUTER_WAY)
-                .message(tr("No outer way for multipolygon"))
+                .message(r.isBoundary() ? tr("No outer way for boundary") : tr("No outer way for multipolygon"))
                 .primitives(r)
                 .build());
     }
@@ -174,7 +174,7 @@ public class MultipolygonTest extends Test {
      */
     private void checkStyleConsistency(Relation r, Multipolygon polygon) {
         ElemStyles styles = MapPaintStyles.getStyles();
-        if (styles != null && !r.hasTag("type", "boundary")) {
+        if (styles != null && !r.isBoundary()) {
             AreaElement area = ElemStyles.getAreaElemStyle(r, false);
             boolean areaStyle = area != null;
             // If area style was not found for relation then use style of ways
@@ -192,7 +192,7 @@ public class MultipolygonTest extends Test {
                             .build());
                 } else {
                     /* old style multipolygon - solve: copy tags from outer way to multipolygon */
-                    errors.add(TestError.builder(this, Severity.WARNING, NO_STYLE_POLYGON)
+                    errors.add(TestError.builder(this, Severity.ERROR, NO_STYLE_POLYGON)
                             .message(trn("Multipolygon relation should be tagged with area tags and not the outer way",
                                     "Multipolygon relation should be tagged with area tags and not the outer ways",
                                     polygon.getOuterWays().size()))
@@ -203,9 +203,7 @@ public class MultipolygonTest extends Test {
 
             if (area != null) {
                 for (Way wInner : polygon.getInnerWays()) {
-                    AreaElement areaInner = ElemStyles.getAreaElemStyle(wInner, false);
-
-                    if (areaInner != null && area.equals(areaInner)) {
+                    if (area.equals(ElemStyles.getAreaElemStyle(wInner, false))) {
                         errors.add(TestError.builder(this, Severity.OTHER, INNER_STYLE_MISMATCH)
                                 .message(tr("With the currently used mappaint style the style for inner way equals the multipolygon style"))
                                 .primitives(Arrays.asList(r, wInner))
@@ -225,7 +223,7 @@ public class MultipolygonTest extends Test {
                                     .highlight(wOuter)
                                     .build());
                         } else if (areaStyle) { /* style on outer way of multipolygon, but equal to polygon */
-                            errors.add(TestError.builder(this, Severity.WARNING, OUTER_STYLE)
+                            errors.add(TestError.builder(this, Severity.ERROR, OUTER_STYLE)
                                     .message(tr("Area style on outer way"))
                                     .primitives(Arrays.asList(r, wOuter))
                                     .highlight(wOuter)
@@ -251,7 +249,7 @@ public class MultipolygonTest extends Test {
 
         List<Node> openNodes = polygon.getOpenEnds();
         if (!openNodes.isEmpty()) {
-            errors.add(TestError.builder(this, Severity.WARNING, NON_CLOSED_WAY)
+            errors.add(TestError.builder(this, Severity.ERROR, NON_CLOSED_WAY)
                     .message(tr("Multipolygon is not closed"))
                     .primitives(combineRelAndPrimitives(r, openNodes))
                     .highlight(openNodes)
@@ -468,7 +466,7 @@ public class MultipolygonTest extends Test {
             for (long wayId : pol.outerWay.getWayIds()) {
                 RelationMember member = wayMap.get(wayId);
                 if (!member.getRole().equals(calculatedRole)) {
-                    errors.add(TestError.builder(this, Severity.WARNING, WRONG_MEMBER_ROLE)
+                    errors.add(TestError.builder(this, Severity.ERROR, WRONG_MEMBER_ROLE)
                             .message(RelationChecker.ROLE_VERIF_PROBLEM_MSG,
                                     marktr("Role for ''{0}'' should be ''{1}''"),
                                     member.getMember().getDisplayName(DefaultNameFormatter.getInstance()),
@@ -478,7 +476,7 @@ public class MultipolygonTest extends Test {
                             .build());
                     if (pol.level == 0 && "inner".equals(member.getRole())) {
                         // maybe only add this error if we found an outer ring with correct role(s) ?
-                        errors.add(TestError.builder(this, Severity.WARNING, INNER_WAY_OUTSIDE)
+                        errors.add(TestError.builder(this, Severity.ERROR, INNER_WAY_OUTSIDE)
                                 .message(tr("Multipolygon inner way is outside"))
                                 .primitives(Arrays.asList(r, member.getMember()))
                                 .highlight(member.getMember())
@@ -565,7 +563,7 @@ public class MultipolygonTest extends Test {
                         String msg = loop == 0 ? tr("Intersection between multipolygon ways")
                                 : samePoly ? tr("Multipolygon ring contains segments twice")
                                         : tr("Multipolygon outer way shares segment(s) with other ring");
-                        errors.add(TestError.builder(this, Severity.WARNING, CROSSING_WAYS)
+                        errors.add(TestError.builder(this, Severity.ERROR, CROSSING_WAYS)
                                 .message(msg)
                                 .primitives(Arrays.asList(r, ways.get(0), ways.get(1)))
                                 .highlightWaySegments(entry.getValue())
@@ -655,9 +653,9 @@ public class MultipolygonTest extends Test {
                             .build());
                 }
             } else {
-                if (!rm.hasRole("admin_centre", "label", "subarea", "land_area")) {
+                if (!r.isBoundary() || !rm.hasRole("admin_centre", "label", "subarea", "land_area")) {
                     errors.add(TestError.builder(this, Severity.WARNING, WRONG_MEMBER_TYPE)
-                            .message(tr("Non-Way in multipolygon"))
+                            .message(r.isBoundary() ? tr("Non-Way in boundary") : tr("Non-Way in multipolygon"))
                             .primitives(Arrays.asList(r, rm.getMember()))
                             .build());
                 }
diff --git a/src/org/openstreetmap/josm/data/validation/tests/PowerLines.java b/src/org/openstreetmap/josm/data/validation/tests/PowerLines.java
index 7d167b8..3a99c09 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/PowerLines.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/PowerLines.java
@@ -8,7 +8,6 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
@@ -28,6 +27,7 @@ import org.openstreetmap.josm.tools.Geometry;
  */
 public class PowerLines extends Test {
 
+    /** Test identifier */
     protected static final int POWER_LINES = 2501;
 
     /** Values for {@code power} key interpreted as power lines */
@@ -105,7 +105,7 @@ public class PowerLines extends Test {
             if (station instanceof Way) {
                 nodesLists.add(((Way) station).getNodes());
             } else if (station instanceof Relation) {
-                Multipolygon polygon = MultipolygonCache.getInstance().get(Main.map.mapView, (Relation) station);
+                Multipolygon polygon = MultipolygonCache.getInstance().get((Relation) station);
                 if (polygon != null) {
                     for (JoinedWay outer : Multipolygon.joinWays(polygon.getOuterWays())) {
                         nodesLists.add(outer.getNodes());
diff --git a/src/org/openstreetmap/josm/data/validation/tests/RelationChecker.java b/src/org/openstreetmap/josm/data/validation/tests/RelationChecker.java
index 42134e0..185d48a 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/RelationChecker.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/RelationChecker.java
@@ -305,11 +305,10 @@ public class RelationChecker extends Test {
         }
         // verify unwanted members
         for (String key : map.keySet()) {
-            if (!allroles.containsKey(key)) {
+            if (!allroles.containsKey(key) && !"network".equals(n.get("type")) && !"bicycle".equals(n.get("route"))) {
                 String templates = allroles.keySet().stream().collect(Collectors.joining("/"));
 
                 if (!key.isEmpty()) {
-
                     errors.add(TestError.builder(this, Severity.WARNING, ROLE_UNKNOWN)
                             .message(ROLE_VERIF_PROBLEM_MSG, marktr("Role ''{0}'' unknown in templates ''{1}''"), key, templates)
                             .primitives(n)
diff --git a/src/org/openstreetmap/josm/data/validation/tests/SimilarNamedWays.java b/src/org/openstreetmap/josm/data/validation/tests/SimilarNamedWays.java
index d91e063..43ad9d3 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/SimilarNamedWays.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/SimilarNamedWays.java
@@ -252,7 +252,7 @@ public class SimilarNamedWays extends Test {
         private final Pattern regExpr;
         private final String replacement;
 
-        public SynonymRule(String replacement, String ... words) {
+        public SynonymRule(String replacement, String... words) {
             this.replacement = replacement.toLowerCase(Locale.ENGLISH);
             this.words = words;
 
diff --git a/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java b/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
index c350a49..7d450a7 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
@@ -270,10 +270,10 @@ public class TagChecker extends TagTest {
             for (TaggingPreset p : presets) {
                 for (TaggingPresetItem i : p.data) {
                     if (i instanceof KeyedItem) {
-                        addPresetValue(p, (KeyedItem) i);
+                        addPresetValue((KeyedItem) i);
                     } else if (i instanceof CheckGroup) {
                         for (Check c : ((CheckGroup) i).checks) {
-                            addPresetValue(p, c);
+                            addPresetValue(c);
                         }
                     }
                 }
@@ -281,15 +281,11 @@ public class TagChecker extends TagTest {
         }
     }
 
-    private static void addPresetValue(TaggingPreset p, KeyedItem ky) {
+    private static void addPresetValue(KeyedItem ky) {
         Collection<String> values = ky.getValues();
         if (ky.key != null && values != null) {
-            try {
-                presetsValueData.putAll(ky.key, values);
-                harmonizedKeys.put(harmonizeKey(ky.key), ky.key);
-            } catch (NullPointerException e) {
-                Main.error(e, p+": Unable to initialize "+ky+'.');
-            }
+            presetsValueData.putAll(ky.key, values);
+            harmonizedKeys.put(harmonizeKey(ky.key), ky.key);
         }
     }
 
@@ -542,13 +538,11 @@ public class TagChecker extends TagTest {
     }
 
     private static String harmonizeKey(String key) {
-        key = key.toLowerCase(Locale.ENGLISH).replace('-', '_').replace(':', '_').replace(' ', '_');
-        return Utils.strip(key, "-_;:,");
+        return Utils.strip(key.toLowerCase(Locale.ENGLISH).replace('-', '_').replace(':', '_').replace(' ', '_'), "-_;:,");
     }
 
     private static String harmonizeValue(String value) {
-        value = value.toLowerCase(Locale.ENGLISH).replace('-', '_').replace(' ', '_');
-        return Utils.strip(value, "-_;:,");
+        return Utils.strip(value.toLowerCase(Locale.ENGLISH).replace('-', '_').replace(' ', '_'), "-_;:,");
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/gui/ExtendedDialog.java b/src/org/openstreetmap/josm/gui/ExtendedDialog.java
index b82297f..3db93b3 100644
--- a/src/org/openstreetmap/josm/gui/ExtendedDialog.java
+++ b/src/org/openstreetmap/josm/gui/ExtendedDialog.java
@@ -130,7 +130,7 @@ public class ExtendedDialog extends JDialog {
      * @param title        The text that will be shown in the window titlebar
      * @param buttonTexts  String Array of the text that will appear on the buttons. The first button is the default one.
      */
-    public ExtendedDialog(Component parent, String title, String ... buttonTexts) {
+    public ExtendedDialog(Component parent, String title, String... buttonTexts) {
         this(parent, title, buttonTexts, true, true);
     }
 
@@ -177,7 +177,7 @@ public class ExtendedDialog extends JDialog {
      * @param buttonIcons The button icons
      * @return {@code this}
      */
-    public ExtendedDialog setButtonIcons(Icon ... buttonIcons) {
+    public ExtendedDialog setButtonIcons(Icon... buttonIcons) {
         this.bIcons = Utils.copyArray(buttonIcons);
         return this;
     }
@@ -187,7 +187,7 @@ public class ExtendedDialog extends JDialog {
      * @param buttonIcons The button icon names
      * @return {@code this}
      */
-    public ExtendedDialog setButtonIcons(String ... buttonIcons) {
+    public ExtendedDialog setButtonIcons(String... buttonIcons) {
         bIcons = new Icon[buttonIcons.length];
         for (int i = 0; i < buttonIcons.length; ++i) {
             bIcons[i] = ImageProvider.get(buttonIcons[i]);
@@ -202,7 +202,7 @@ public class ExtendedDialog extends JDialog {
      * @param toolTipTexts the tool tip texts. Ignored, if null.
      * @return {@code this}
      */
-    public ExtendedDialog setToolTipTexts(String ... toolTipTexts) {
+    public ExtendedDialog setToolTipTexts(String... toolTipTexts) {
         this.bToolTipTexts = Utils.copyArray(toolTipTexts);
         return this;
     }
diff --git a/src/org/openstreetmap/josm/gui/ImageryMenu.java b/src/org/openstreetmap/josm/gui/ImageryMenu.java
index 7433a80..0ed2265 100644
--- a/src/org/openstreetmap/josm/gui/ImageryMenu.java
+++ b/src/org/openstreetmap/josm/gui/ImageryMenu.java
@@ -14,6 +14,7 @@ import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
+import java.util.Optional;
 
 import javax.swing.Action;
 import javax.swing.JComponent;
@@ -263,18 +264,17 @@ public class ImageryMenu extends JMenu implements LayerChangeListener {
     private final List<Object> dynamicItems = new ArrayList<>(20);
 
     /**
-     * Remove all the items in @field dynamicItems collection
+     * Remove all the items in dynamic items collection
      * @since 5803
      */
     private void removeDynamicItems() {
         for (Object item : dynamicItems) {
             if (item instanceof JMenuItem) {
+                Optional.ofNullable(((JMenuItem) item).getAction()).ifPresent(Main.toolbar::unregister);
                 remove((JMenuItem) item);
-            }
-            if (item instanceof MenuComponent) {
+            } else if (item instanceof MenuComponent) {
                 remove((MenuComponent) item);
-            }
-            if (item instanceof Component) {
+            } else if (item instanceof Component) {
                 remove((Component) item);
             }
         }
diff --git a/src/org/openstreetmap/josm/gui/JosmUserIdentityManager.java b/src/org/openstreetmap/josm/gui/JosmUserIdentityManager.java
index b6aef69..059aa9f 100644
--- a/src/org/openstreetmap/josm/gui/JosmUserIdentityManager.java
+++ b/src/org/openstreetmap/josm/gui/JosmUserIdentityManager.java
@@ -19,6 +19,7 @@ import org.openstreetmap.josm.io.OsmServerUserInfoReader;
 import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.io.auth.CredentialsManager;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
 
 /**
  * JosmUserIdentityManager is a global object which keeps track of what JOSM knows about
@@ -65,7 +66,7 @@ public final class JosmUserIdentityManager implements PreferenceChangedListener
                     !Main.isOffline(OnlineResource.OSM_API)) {
                 try {
                     instance.initFromOAuth();
-                } catch (RuntimeException e) {
+                } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
                     Main.error(e);
                     // Fall back to preferences if OAuth identification fails for any reason
                     instance.initFromPreferences();
@@ -238,7 +239,7 @@ public final class JosmUserIdentityManager implements PreferenceChangedListener
      * @return true if the user with name <code>username</code> is the current user
      */
     public boolean isCurrentUser(String username) {
-        return username != null && this.userName != null && this.userName.equals(username);
+        return this.userName != null && this.userName.equals(username);
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/MainApplication.java b/src/org/openstreetmap/josm/gui/MainApplication.java
index df50f36..f8d6143 100644
--- a/src/org/openstreetmap/josm/gui/MainApplication.java
+++ b/src/org/openstreetmap/josm/gui/MainApplication.java
@@ -22,10 +22,13 @@ import java.security.PermissionCollection;
 import java.security.Permissions;
 import java.security.Policy;
 import java.security.cert.CertificateException;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
+import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
 import java.util.TreeSet;
@@ -79,6 +82,11 @@ import org.openstreetmap.josm.tools.bugreport.BugReportExceptionHandler;
  */
 public class MainApplication extends Main {
 
+    /**
+     * Command-line arguments used to run the application.
+     */
+    private static final List<String> COMMAND_LINE_ARGS = new ArrayList<>();
+
     private MainFrame mainFrame;
 
     /**
@@ -120,6 +128,15 @@ public class MainApplication extends Main {
     }
 
     /**
+     * Returns the command-line arguments used to run the application.
+     * @return the command-line arguments used to run the application
+     * @since 11650
+     */
+    public static List<String> getCommandLineArgs() {
+        return Collections.unmodifiableList(COMMAND_LINE_ARGS);
+    }
+
+    /**
      * Displays help on the console
      * @since 2748
      */
@@ -238,7 +255,7 @@ public class MainApplication extends Main {
             return;
         }
 
-        Main.COMMAND_LINE_ARGS.addAll(Arrays.asList(argArray));
+        COMMAND_LINE_ARGS.addAll(Arrays.asList(argArray));
 
         boolean skipLoadingPlugins = args.hasOption(Option.SKIP_PLUGINS);
         if (skipLoadingPlugins) {
@@ -275,7 +292,7 @@ public class MainApplication extends Main {
         WindowGeometry geometry = WindowGeometry.mainWindow("gui.geometry",
                 args.getSingle(Option.GEOMETRY).orElse(null),
                 !args.hasOption(Option.NO_MAXIMIZE) && Main.pref.getBoolean("gui.maximized", false));
-        final MainFrame mainFrame = new MainFrame(contentPanePrivate, mainPanel, geometry);
+        final MainFrame mainFrame = new MainFrame(contentPanePrivate, geometry);
         Main.parent = mainFrame;
 
         if (args.hasOption(Option.LOAD_PREFERENCES)) {
@@ -566,10 +583,11 @@ public class MainApplication extends Main {
         }
 
         private static boolean handleNetworkErrors() {
-            boolean condition = !NETWORK_ERRORS.isEmpty();
+            Map<String, Throwable> networkErrors = Main.getNetworkErrors();
+            boolean condition = !networkErrors.isEmpty();
             if (condition) {
                 Set<String> errors = new TreeSet<>();
-                for (Throwable t : NETWORK_ERRORS.values()) {
+                for (Throwable t : networkErrors.values()) {
                     errors.add(t.toString());
                 }
                 return handleNetworkOrProxyErrors(condition, tr("Network errors occurred"),
@@ -579,7 +597,7 @@ public class MainApplication extends Main {
                                 "{1}" +
                                 "It may be due to a missing proxy configuration.<br>" +
                                 "Would you like to change your proxy settings now?",
-                                Utils.joinAsHtmlUnorderedList(NETWORK_ERRORS.keySet()),
+                                Utils.joinAsHtmlUnorderedList(networkErrors.keySet()),
                                 Utils.joinAsHtmlUnorderedList(errors)
                         ));
             }
diff --git a/src/org/openstreetmap/josm/gui/MainFrame.java b/src/org/openstreetmap/josm/gui/MainFrame.java
index 0d9317d..6cbe55b 100644
--- a/src/org/openstreetmap/josm/gui/MainFrame.java
+++ b/src/org/openstreetmap/josm/gui/MainFrame.java
@@ -54,16 +54,16 @@ public class MainFrame extends JFrame {
      * Create a new main window.
      */
     public MainFrame() {
-        this(new JPanel(), new MainPanel(Main.getLayerManager()), new WindowGeometry(new Rectangle(10, 10, 500, 500)));
+        this(new JPanel(), new WindowGeometry(new Rectangle(10, 10, 500, 500)));
     }
 
     /**
      * Create a new main window. The parameters will be removed in the future.
      * @param contentPanePrivate The content
-     * @param mainPanel The main panel.
      * @param geometry The inital geometry to use.
+     * @since 11713
      */
-    public MainFrame(Container contentPanePrivate, MainPanel mainPanel, WindowGeometry geometry) {
+    public MainFrame(Container contentPanePrivate, WindowGeometry geometry) {
         super();
         this.geometry = geometry;
         setContentPane(contentPanePrivate);
diff --git a/src/org/openstreetmap/josm/gui/MainMenu.java b/src/org/openstreetmap/josm/gui/MainMenu.java
index 6429f2c..b313fc4 100644
--- a/src/org/openstreetmap/josm/gui/MainMenu.java
+++ b/src/org/openstreetmap/josm/gui/MainMenu.java
@@ -377,7 +377,7 @@ public class MainMenu extends JMenuBar {
      * group is for currently open windows that cannot be toggled, e.g. relation editors. It's recommended
      * to use WINDOW_MENU_GROUP to determine the group integer.
      */
-    public final JMenu windowMenu = addMenu("Windows", /* I18N: mnemonic: W */ trc("menu", "Windows"), KeyEvent.VK_W, 10, ht("/Menu/Windows"));
+    public final JMenu windowMenu = addMenu("Windows", /* I18N: mnemonic: W */ trc("menu", "Windows"), KeyEvent.VK_W, 10, ht("/ToggleDialogs"));
 
     /**
      * audioMenu contains all audio-related actions. Be careful, this menu is not guaranteed to be displayed at all
diff --git a/src/org/openstreetmap/josm/gui/MainPanel.java b/src/org/openstreetmap/josm/gui/MainPanel.java
index 6c52f7c..d89c4ee 100644
--- a/src/org/openstreetmap/josm/gui/MainPanel.java
+++ b/src/org/openstreetmap/josm/gui/MainPanel.java
@@ -83,7 +83,7 @@ public class MainPanel extends JPanel {
     }
 
     private MapFrame createNewMapFrame() {
-        MapFrame mapFrame = new MapFrame(null, null);
+        MapFrame mapFrame = new MapFrame(null);
         // Required by many components.
         Main.map = mapFrame;
 
diff --git a/src/org/openstreetmap/josm/gui/MapFrame.java b/src/org/openstreetmap/josm/gui/MapFrame.java
index b819b0d..036aaca 100644
--- a/src/org/openstreetmap/josm/gui/MapFrame.java
+++ b/src/org/openstreetmap/josm/gui/MapFrame.java
@@ -182,15 +182,15 @@ public class MapFrame extends JPanel implements Destroyable, ActiveLayerChangeLi
 
     /**
      * Constructs a new {@code MapFrame}.
-     * @param contentPane Ignored. Main content pane is used.
      * @param viewportData the initial viewport of the map. Can be null, then
      * the viewport is derived from the layer data.
+     * @since 11713
      */
-    public MapFrame(JPanel contentPane, ViewportData viewportData) {
+    public MapFrame(ViewportData viewportData) {
         setSize(400, 400);
         setLayout(new BorderLayout());
 
-        mapView = new MapView(Main.getLayerManager(), contentPane, viewportData);
+        mapView = new MapView(Main.getLayerManager(), viewportData);
 
         splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true);
 
@@ -227,17 +227,17 @@ public class MapFrame extends JPanel implements Destroyable, ActiveLayerChangeLi
         // toolBarActions, map mode buttons
         mapModeSelect = new SelectAction(this);
         mapModeSelectLasso = new LassoModeAction();
-        mapModeDraw = new DrawAction(this);
+        mapModeDraw = new DrawAction();
         mapModeZoom = new ZoomAction(this);
 
         addMapMode(new IconToggleButton(mapModeSelect));
         addMapMode(new IconToggleButton(mapModeSelectLasso, true));
         addMapMode(new IconToggleButton(mapModeDraw));
         addMapMode(new IconToggleButton(mapModeZoom, true));
-        addMapMode(new IconToggleButton(new DeleteAction(this), true));
+        addMapMode(new IconToggleButton(new DeleteAction(), true));
         addMapMode(new IconToggleButton(new ParallelWayAction(this), true));
-        addMapMode(new IconToggleButton(new ExtrudeAction(this), true));
-        addMapMode(new IconToggleButton(new ImproveWayAccuracyAction(Main.map), false));
+        addMapMode(new IconToggleButton(new ExtrudeAction(), true));
+        addMapMode(new IconToggleButton(new ImproveWayAccuracyAction(), false));
         toolBarActionsGroup.setSelected(allMapModeButtons.get(0).getModel(), true);
         toolBarActions.setFloatable(false);
 
diff --git a/src/org/openstreetmap/josm/gui/MapMover.java b/src/org/openstreetmap/josm/gui/MapMover.java
index 03e9b53..ae954de 100644
--- a/src/org/openstreetmap/josm/gui/MapMover.java
+++ b/src/org/openstreetmap/josm/gui/MapMover.java
@@ -14,7 +14,6 @@ import java.util.ArrayList;
 import java.util.Optional;
 
 import javax.swing.AbstractAction;
-import javax.swing.JPanel;
 
 import org.openstreetmap.gui.jmapviewer.JMapViewer;
 import org.openstreetmap.josm.Main;
@@ -37,7 +36,9 @@ public class MapMover extends MouseAdapter implements Destroyable {
 
     public static final BooleanProperty PROP_ZOOM_REVERSE_WHEEL = new BooleanProperty("zoom.reverse-wheel", false);
 
-    private static final JMapViewerUpdater jMapViewerUpdater = new JMapViewerUpdater();
+    static {
+        new JMapViewerUpdater();
+    }
 
     private static class JMapViewerUpdater implements PreferenceChangedListener {
 
@@ -116,9 +117,9 @@ public class MapMover extends MouseAdapter implements Destroyable {
     /**
      * Constructs a new {@code MapMover}.
      * @param navComp the navigatable component
-     * @param contentPane Ignored. The main action map is used.
+     * @since 11713
      */
-    public MapMover(NavigatableComponent navComp, JPanel contentPane) {
+    public MapMover(NavigatableComponent navComp) {
         this.nc = navComp;
         nc.addMouseListener(this);
         nc.addMouseMotionListener(this);
diff --git a/src/org/openstreetmap/josm/gui/MapStatus.java b/src/org/openstreetmap/josm/gui/MapStatus.java
index d5928cc..d211559 100644
--- a/src/org/openstreetmap/josm/gui/MapStatus.java
+++ b/src/org/openstreetmap/josm/gui/MapStatus.java
@@ -1077,7 +1077,7 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
         if (thread != null) {
             try {
                 thread.interrupt();
-            } catch (RuntimeException e) {
+            } catch (SecurityException e) {
                 Main.error(e);
             }
         }
diff --git a/src/org/openstreetmap/josm/gui/MapView.java b/src/org/openstreetmap/josm/gui/MapView.java
index d70a3f6..2bc17c1 100644
--- a/src/org/openstreetmap/josm/gui/MapView.java
+++ b/src/org/openstreetmap/josm/gui/MapView.java
@@ -70,6 +70,7 @@ import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.layer.geoimage.GeoImageLayer;
 import org.openstreetmap.josm.gui.layer.markerlayer.PlayHeadMarker;
 import org.openstreetmap.josm.tools.AudioPlayer;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
@@ -236,8 +237,21 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
      * @param viewportData the initial viewport of the map. Can be null, then
      * the viewport is derived from the layer data.
      * @since 10279
+     * @deprecated use {@link #MapView(MainLayerManager, ViewportData)} instead
      */
+    @Deprecated
     public MapView(MainLayerManager layerManager, final JPanel contentPane, final ViewportData viewportData) {
+        this(layerManager, viewportData);
+    }
+
+    /**
+     * Constructs a new {@code MapView}.
+     * @param layerManager The layers to display.
+     * @param viewportData the initial viewport of the map. Can be null, then
+     * the viewport is derived from the layer data.
+     * @since 11713
+     */
+    public MapView(MainLayerManager layerManager, final ViewportData viewportData) {
         this.layerManager = layerManager;
         initialViewport = viewportData;
         layerManager.addLayerChangeListener(this, true);
@@ -248,12 +262,11 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
             @Override
             public void componentResized(ComponentEvent e) {
                 removeComponentListener(this);
-
-                mapMover = new MapMover(MapView.this, contentPane);
+                mapMover = new MapMover(MapView.this);
             }
         });
 
-        // listend to selection changes to redraw the map
+        // listens to selection changes to redraw the map
         DataSet.addSelectionListener(repaintSelectionChangedListener);
 
         //store the last mouse action
@@ -329,9 +342,11 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
             } else {
                 registeredLayers.put(layer, painter);
 
-                ProjectionBounds viewProjectionBounds = layer.getViewProjectionBounds();
-                if (viewProjectionBounds != null) {
-                    scheduleZoomTo(new ViewportData(viewProjectionBounds));
+                if (e.isZoomRequired()) {
+                    ProjectionBounds viewProjectionBounds = layer.getViewProjectionBounds();
+                    if (viewProjectionBounds != null) {
+                        scheduleZoomTo(new ViewportData(viewProjectionBounds));
+                    }
                 }
 
                 layer.addPropertyChangeListener(this);
@@ -341,7 +356,7 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
 
                 repaint();
             }
-        } catch (RuntimeException t) {
+        } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException t) {
             throw BugReport.intercept(t).put("layer", e.getAddedLayer());
         }
     }
@@ -440,7 +455,7 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
             }
             painter.paint(paintGraphics);
             g.setPaintMode();
-        } catch (RuntimeException t) {
+        } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException t) {
             BugReport.intercept(t).put("layer", layer).warn();
         }
     }
@@ -454,11 +469,21 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
             if (!prepareToDraw()) {
                 return;
             }
-        } catch (RuntimeException e) {
+        } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
             BugReport.intercept(e).put("center", this::getCenter).warn();
             return;
         }
 
+        try {
+            drawMapContent(g);
+        } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
+            throw BugReport.intercept(e).put("visibleLayers", layerManager::getVisibleLayersInZOrder)
+                    .put("temporaryLayers", temporaryLayers);
+        }
+        super.paint(g);
+    }
+
+    private void drawMapContent(Graphics g) {
         List<Layer> visibleLayers = layerManager.getVisibleLayersInZOrder();
 
         int nonChangedLayersCount = 0;
@@ -524,14 +549,14 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
 
         try {
             drawTemporaryLayers(tempG, getLatLonBounds(g.getClipBounds()));
-        } catch (RuntimeException e) {
+        } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
             BugReport.intercept(e).put("temporaryLayers", temporaryLayers).warn();
         }
 
         // draw world borders
         try {
             drawWorldBorders(tempG);
-        } catch (RuntimeException e) {
+        } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
             // getProjection() needs to be inside lambda to catch errors.
             BugReport.intercept(e).put("bounds", () -> getProjection().getWorldBoundsLatLon()).warn();
         }
@@ -572,7 +597,6 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
             // But the application seems to work fine after, so let's just log the error
             Main.error(e);
         }
-        super.paint(g);
     }
 
     private void drawTemporaryLayers(Graphics2D tempG, Bounds box) {
@@ -580,7 +604,7 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
             for (MapViewPaintable mvp : temporaryLayers) {
                 try {
                     mvp.paint(tempG, this, box);
-                } catch (RuntimeException e) {
+                } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
                     throw BugReport.intercept(e).put("mvp", mvp);
                 }
             }
@@ -725,7 +749,7 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
         layerManager.removeActiveLayerChangeListener(this);
         Main.pref.removePreferenceChangeListener(this);
         DataSet.removeSelectionListener(repaintSelectionChangedListener);
-        MultipolygonCache.getInstance().clear(this);
+        MultipolygonCache.getInstance().clear();
         if (mapMover != null) {
             mapMover.destroy();
         }
diff --git a/src/org/openstreetmap/josm/gui/MapViewState.java b/src/org/openstreetmap/josm/gui/MapViewState.java
index e861289..cb0cc6c 100644
--- a/src/org/openstreetmap/josm/gui/MapViewState.java
+++ b/src/org/openstreetmap/josm/gui/MapViewState.java
@@ -26,6 +26,7 @@ import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.gui.download.DownloadDialog;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.Geometry;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
 
 /**
@@ -144,7 +145,7 @@ public final class MapViewState implements Serializable {
     private static Point findTopLeftOnScreen(JComponent position) {
         try {
             return position.getLocationOnScreen();
-        } catch (RuntimeException e) {
+        } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
             throw BugReport.intercept(e).put("position", position).put("parent", position::getParent);
         }
     }
@@ -196,7 +197,7 @@ public final class MapViewState implements Serializable {
     public MapViewPoint getPointFor(Node node) {
         try {
             return getPointFor(node.getEastNorth(getProjection()));
-        } catch (RuntimeException e) {
+        } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
             throw BugReport.intercept(e).put("node", node);
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/NoteSortDialog.java b/src/org/openstreetmap/josm/gui/NoteSortDialog.java
index ccff854..5a2b402 100644
--- a/src/org/openstreetmap/josm/gui/NoteSortDialog.java
+++ b/src/org/openstreetmap/josm/gui/NoteSortDialog.java
@@ -14,7 +14,6 @@ import javax.swing.JRadioButton;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.notes.Note;
-import org.openstreetmap.josm.data.osm.NoteData;
 
 /**
  * A dialog to allow the user to choose a sorting method for the list of notes
@@ -42,13 +41,13 @@ public class NoteSortDialog extends ExtendedDialog {
      */
     public void showSortDialog(Comparator<Note> currentSortMode) {
         JLabel label = new JLabel(tr("Select note sorting method"));
-        if (currentSortMode == NoteData.DEFAULT_COMPARATOR) {
+        if (currentSortMode == Note.DEFAULT_COMPARATOR) {
             defaultSort.setSelected(true);
-        } else if (currentSortMode == NoteData.DATE_COMPARATOR) {
+        } else if (currentSortMode == Note.DATE_COMPARATOR) {
             dateSort.setSelected(true);
-        } else if (currentSortMode == NoteData.USER_COMPARATOR) {
+        } else if (currentSortMode == Note.USER_COMPARATOR) {
             userSort.setSelected(true);
-        } else if (currentSortMode == NoteData.LAST_ACTION_COMPARATOR) {
+        } else if (currentSortMode == Note.LAST_ACTION_COMPARATOR) {
             lastActionSort.setSelected(true);
         } else {
             Main.warn("sort mode not recognized");
@@ -76,13 +75,13 @@ public class NoteSortDialog extends ExtendedDialog {
     /** @return Note comparator that the user has selected */
     public Comparator<Note> getSelectedComparator() {
         if (dateSort.isSelected()) {
-            return NoteData.DATE_COMPARATOR;
+            return Note.DATE_COMPARATOR;
         } else if (userSort.isSelected()) {
-            return NoteData.USER_COMPARATOR;
+            return Note.USER_COMPARATOR;
         } else if (lastActionSort.isSelected()) {
-            return NoteData.LAST_ACTION_COMPARATOR;
+            return Note.LAST_ACTION_COMPARATOR;
         } else {
-            return NoteData.DEFAULT_COMPARATOR;
+            return Note.DEFAULT_COMPARATOR;
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/PleaseWaitDialog.java b/src/org/openstreetmap/josm/gui/PleaseWaitDialog.java
index 5b81af7..f732ae6 100644
--- a/src/org/openstreetmap/josm/gui/PleaseWaitDialog.java
+++ b/src/org/openstreetmap/josm/gui/PleaseWaitDialog.java
@@ -27,12 +27,20 @@ import org.openstreetmap.josm.gui.widgets.JosmTextArea;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
 
+/**
+ * This is a dialog that displays the progress of an action to the user.
+ */
 public class PleaseWaitDialog extends JDialog implements ProgressMonitorDialog {
 
     private final JProgressBar progressBar = new JProgressBar();
 
     private final JLabel currentAction = new JLabel("");
     private final JLabel customText = new JLabel("");
+    /**
+     * The direct progress access.
+     * @deprecated To be removed in mid-2017. Use {@link #updateProgress(int)}
+     */
+    @Deprecated
     public final transient BoundedRangeModel progress = progressBar.getModel();
     private JButton btnCancel;
     private JButton btnInBackground;
@@ -40,6 +48,16 @@ public class PleaseWaitDialog extends JDialog implements ProgressMonitorDialog {
     private final JosmTextArea taLog = new JosmTextArea(5, 50);
     private final JScrollPane spLog = new JScrollPane(taLog);
 
+
+    /**
+     * Constructs a new {@code PleaseWaitDialog}.
+     * @param parent the {@code Component} from which the dialog is displayed. Can be {@code null}.
+     */
+    public PleaseWaitDialog(Component parent) {
+        super(GuiHelper.getFrameForComponent(parent), ModalityType.DOCUMENT_MODAL);
+        initDialog();
+    }
+
     private void initDialog() {
         setLayout(new GridBagLayout());
         JPanel pane = new JPanel(new GridBagLayout());
@@ -75,15 +93,6 @@ public class PleaseWaitDialog extends JDialog implements ProgressMonitorDialog {
         });
     }
 
-    /**
-     * Constructs a new {@code PleaseWaitDialog}.
-     * @param parent the {@code Component} from which the dialog is displayed. Can be {@code null}.
-     */
-    public PleaseWaitDialog(Component parent) {
-        super(GuiHelper.getFrameForComponent(parent), ModalityType.DOCUMENT_MODAL);
-        initDialog();
-    }
-
     @Override
     public void setIndeterminate(boolean newValue) {
         UIManager.put("ProgressBar.cycleTime", UIManager.getInt("ProgressBar.repaintInterval") * 100);
@@ -98,7 +107,7 @@ public class PleaseWaitDialog extends JDialog implements ProgressMonitorDialog {
     }
 
     /**
-     * Sets a custom text line below currentAction. Can be used to display additional information
+     * Sets a custom text line below currentAction. Can be used to display additional information.
      * @param text custom text
      */
     @Override
@@ -141,14 +150,21 @@ public class PleaseWaitDialog extends JDialog implements ProgressMonitorDialog {
     }
 
     /**
-     * Sets whether the cancel button is enabled or not
+     * Sets whether the cancel button is enabled or not.
      *
      * @param enabled true, if the cancel button is enabled; false otherwise
+     * @see #setCancelCallback(ActionListener)
      */
     public void setCancelEnabled(boolean enabled) {
         btnCancel.setEnabled(enabled);
     }
 
+    /**
+     * Enables / disables a button that can be pressed to run the task in background.
+     *
+     * @param value <code>true</code> iff that button should be displayed.
+     * @see #setInBackgroundCallback(ActionListener)
+     */
     public void setInBackgroundPossible(boolean value) {
         btnInBackground.setVisible(value);
     }
@@ -189,7 +205,16 @@ public class PleaseWaitDialog extends JDialog implements ProgressMonitorDialog {
 
     @Override
     public void updateProgress(int progress) {
-        this.progress.setValue(progress);
+        this.progressBar.setValue(progress);
         this.progressBar.repaint();
     }
+
+    /**
+     * Sets the maximum progress value.
+     * @param progressBarMax The value that represents the rightmost point of the progress bar (100%).
+     * @since 11672
+     */
+    public void setMaximumProgress(int progressBarMax) {
+        this.progressBar.setMaximum(progressBarMax);
+    }
 }
diff --git a/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java b/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java
index 3a3fbdd..5837926 100644
--- a/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java
+++ b/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java
@@ -14,6 +14,7 @@ import org.openstreetmap.josm.gui.progress.ProgressMonitor.CancelListener;
 import org.openstreetmap.josm.gui.progress.ProgressTaskId;
 import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.bugreport.BugReportExceptionHandler;
 import org.xml.sax.SAXException;
 
@@ -27,6 +28,7 @@ public abstract class PleaseWaitRunnable implements Runnable, CancelListener {
     private boolean ignoreException;
     private final String title;
 
+    /** progress monitor */
     protected final ProgressMonitor progressMonitor;
 
     /**
@@ -111,7 +113,7 @@ public abstract class PleaseWaitRunnable implements Runnable, CancelListener {
                     EventQueue.invokeAndWait(this::afterFinish);
                 }
             }
-        } catch (final RuntimeException |
+        } catch (final JosmRuntimeException | IllegalArgumentException | IllegalStateException | UnsupportedOperationException |
                 OsmTransferException | IOException | SAXException | InvocationTargetException | InterruptedException e) {
             if (!ignoreException) {
                 // Exception has to thrown in EDT to be shown to user
diff --git a/src/org/openstreetmap/josm/gui/ProgramArguments.java b/src/org/openstreetmap/josm/gui/ProgramArguments.java
index a892268..268f189 100644
--- a/src/org/openstreetmap/josm/gui/ProgramArguments.java
+++ b/src/org/openstreetmap/josm/gui/ProgramArguments.java
@@ -102,7 +102,7 @@ public class ProgramArguments {
      * @param args The args passed to main.
      * @since 10936
      */
-    public ProgramArguments(String ... args) {
+    public ProgramArguments(String... args) {
         Stream.of(Option.values()).forEach(o -> argMap.put(o, new ArrayList<>()));
         buildCommandLineArgumentMap(args);
     }
@@ -111,7 +111,7 @@ public class ProgramArguments {
      * Builds the command-line argument map.
      * @param args command-line arguments array
      */
-    private void buildCommandLineArgumentMap(String ... args) {
+    private void buildCommandLineArgumentMap(String... args) {
         LongOpt[] los = Stream.of(Option.values()).map(Option::toLongOpt).toArray(i -> new LongOpt[i]);
 
         Getopt g = new Getopt("JOSM", args, "hv", los);
@@ -214,7 +214,7 @@ public class ProgramArguments {
         return map;
     }
 
-    private static String getValue(String ... kv) {
+    private static String getValue(String... kv) {
         if (kv.length < 2) {
             return "";
         } else if ("null".equals(kv[1])) {
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMergeModel.java b/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMergeModel.java
index 947cd83..5438289 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMergeModel.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMergeModel.java
@@ -273,7 +273,7 @@ public abstract class AbstractListMergeModel<T extends PrimitiveId, C extends Co
         fireStateChanged();
     }
 
-    protected void copyToTop(ListRole role, int ... rows) {
+    protected void copyToTop(ListRole role, int... rows) {
         copy(role, rows, 0);
         mergedEntriesSelectionModel.setSelectionInterval(0, rows.length -1);
     }
@@ -285,7 +285,7 @@ public abstract class AbstractListMergeModel<T extends PrimitiveId, C extends Co
      *
      * @param rows the indices
      */
-    public void copyMyToTop(int ... rows) {
+    public void copyMyToTop(int... rows) {
         copyToTop(MY_ENTRIES, rows);
     }
 
@@ -296,7 +296,7 @@ public abstract class AbstractListMergeModel<T extends PrimitiveId, C extends Co
      *
      * @param rows the indices
      */
-    public void copyTheirToTop(int ... rows) {
+    public void copyTheirToTop(int... rows) {
         copyToTop(THEIR_ENTRIES, rows);
     }
 
@@ -309,7 +309,7 @@ public abstract class AbstractListMergeModel<T extends PrimitiveId, C extends Co
      * @param rows the indices
      */
 
-    public void copyToEnd(ListRole source, int ... rows) {
+    public void copyToEnd(ListRole source, int... rows) {
         copy(source, rows, getMergedEntriesSize());
         mergedEntriesSelectionModel.setSelectionInterval(getMergedEntriesSize()-rows.length, getMergedEntriesSize() -1);
 
@@ -322,7 +322,7 @@ public abstract class AbstractListMergeModel<T extends PrimitiveId, C extends Co
      *
      * @param rows the indices
      */
-    public void copyMyToEnd(int ... rows) {
+    public void copyMyToEnd(int... rows) {
         copyToEnd(MY_ENTRIES, rows);
     }
 
@@ -333,7 +333,7 @@ public abstract class AbstractListMergeModel<T extends PrimitiveId, C extends Co
      *
      * @param rows the indices
      */
-    public void copyTheirToEnd(int ... rows) {
+    public void copyTheirToEnd(int... rows) {
         copyToEnd(THEIR_ENTRIES, rows);
     }
 
@@ -491,7 +491,7 @@ public abstract class AbstractListMergeModel<T extends PrimitiveId, C extends Co
      * @param rows the indices
      *
      */
-    public void moveUpMerged(int ... rows) {
+    public void moveUpMerged(int... rows) {
         if (rows == null || rows.length == 0)
             return;
         if (rows[0] == 0)
@@ -518,7 +518,7 @@ public abstract class AbstractListMergeModel<T extends PrimitiveId, C extends Co
      *
      * @param rows the indices
      */
-    public void moveDownMerged(int ... rows) {
+    public void moveDownMerged(int... rows) {
         if (rows == null || rows.length == 0)
             return;
         List<T> mergedEntries = getMergedEntries();
@@ -546,7 +546,7 @@ public abstract class AbstractListMergeModel<T extends PrimitiveId, C extends Co
      *
      * @param rows the indices
      */
-    public void removeMerged(int ... rows) {
+    public void removeMerged(int... rows) {
         if (rows == null || rows.length == 0)
             return;
 
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/ComparePairType.java b/src/org/openstreetmap/josm/gui/conflict/pair/ComparePairType.java
index baed7f8..24b9dae 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/ComparePairType.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/ComparePairType.java
@@ -32,7 +32,7 @@ public enum ComparePairType {
     private final String displayName;
     private final ListRole[] participatingRoles;
 
-    ComparePairType(String displayName, ListRole ... participatingRoles) {
+    ComparePairType(String displayName, ListRole... participatingRoles) {
         this.displayName = displayName;
         this.participatingRoles = Utils.copyArray(participatingRoles);
     }
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMerger.java b/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMerger.java
index 6fd9f82..0b4d81d 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMerger.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMerger.java
@@ -237,7 +237,7 @@ public class TagMerger extends JPanel implements IConflictResolver {
         return model;
     }
 
-    private void selectNextConflict(int ... rows) {
+    private void selectNextConflict(int... rows) {
         int max = rows[0];
         for (int row: rows) {
             if (row > max) {
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolver.java b/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolver.java
new file mode 100644
index 0000000..75181c9
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolver.java
@@ -0,0 +1,78 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.conflict.tags;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import org.openstreetmap.josm.command.ChangePropertyCommand;
+import org.openstreetmap.josm.command.Command;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.TagCollection;
+
+/**
+ * Combine primitives conflicts resolver.
+ * @since 11772
+ */
+public class CombinePrimitiveResolver {
+
+    private final TagConflictResolverModel modelTagConflictResolver;
+    private final RelationMemberConflictResolverModel modelRelConflictResolver;
+
+    /**
+     * Constructs a new {@code CombinePrimitiveResolver}.
+     * @param tagModel tag conflict resolver model
+     * @param relModel relation member conflict resolver model
+     */
+    public CombinePrimitiveResolver(TagConflictResolverModel tagModel, RelationMemberConflictResolverModel relModel) {
+        this.modelTagConflictResolver = tagModel;
+        this.modelRelConflictResolver = relModel;
+    }
+
+    /**
+     * Builds conflicts resolution commands for the given target primitive.
+     * @param targetPrimitive target primitive
+     * @return list of conflicts resolution commands
+     */
+    public List<Command> buildResolutionCommands(OsmPrimitive targetPrimitive) {
+        List<Command> cmds = new LinkedList<>();
+
+        TagCollection allResolutions = modelTagConflictResolver.getAllResolutions();
+        if (!allResolutions.isEmpty()) {
+            cmds.addAll(buildTagChangeCommand(targetPrimitive, allResolutions));
+        }
+        for (String p : OsmPrimitive.getDiscardableKeys()) {
+            if (targetPrimitive.get(p) != null) {
+                cmds.add(new ChangePropertyCommand(targetPrimitive, p, null));
+            }
+        }
+
+        if (modelRelConflictResolver.getNumDecisions() > 0) {
+            cmds.addAll(modelRelConflictResolver.buildResolutionCommands(targetPrimitive));
+        }
+
+        return cmds;
+    }
+
+    /**
+     * Builds the list of tag change commands.
+     * @param primitive target primitive
+     * @param tc all resolutions
+     * @return the list of tag change commands
+     */
+    protected List<Command> buildTagChangeCommand(OsmPrimitive primitive, TagCollection tc) {
+        List<Command> cmds = new LinkedList<>();
+        for (String key : tc.getKeys()) {
+            if (tc.hasUniqueEmptyValue(key)) {
+                if (primitive.get(key) != null) {
+                    cmds.add(new ChangePropertyCommand(primitive, key, null));
+                }
+            } else {
+                String value = tc.getJoinedValues(key);
+                if (!value.equals(primitive.get(key))) {
+                    cmds.add(new ChangePropertyCommand(primitive, key, value));
+                }
+            }
+        }
+        return cmds;
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java b/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java
index 7f1d80f..9d509fe 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java
@@ -11,8 +11,6 @@ import java.awt.Dimension;
 import java.awt.FlowLayout;
 import java.awt.GraphicsEnvironment;
 import java.awt.event.ActionEvent;
-import java.awt.event.HierarchyBoundsListener;
-import java.awt.event.HierarchyEvent;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
 import java.beans.PropertyChangeEvent;
@@ -34,7 +32,6 @@ import javax.swing.JSplitPane;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
-import org.openstreetmap.josm.command.ChangePropertyCommand;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -46,6 +43,7 @@ import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.widgets.AutoAdjustingSplitPane;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.InputMapUtils;
@@ -61,16 +59,13 @@ import org.openstreetmap.josm.tools.WindowGeometry;
  *
  * Prior to {@link #launchIfNecessary}, the following usage sequence was needed:
  *
- * There is a singleton instance of this dialog which can be retrieved using
- * {@link #getInstance()}.
- *
  * The dialog uses two models: one  for resolving tag conflicts, the other
  * for resolving conflicts in relation memberships. For both models there are accessors,
  * i.e {@link #getTagConflictResolverModel()} and {@link #getRelationMemberConflictResolverModel()}.
  *
  * Models have to be <strong>populated</strong> before the dialog is launched. Example:
  * <pre>
- *    CombinePrimitiveResolverDialog dialog = CombinePrimitiveResolverDialog.getInstance();
+ *    CombinePrimitiveResolverDialog dialog = new CombinePrimitiveResolverDialog(Main.parent);
  *    dialog.getTagConflictResolverModel().populate(aTagCollection);
  *    dialog.getRelationMemberConflictResolverModel().populate(aRelationLinkCollection);
  *    dialog.prepareDefaultDecisions();
@@ -86,26 +81,12 @@ import org.openstreetmap.josm.tools.WindowGeometry;
  */
 public class CombinePrimitiveResolverDialog extends JDialog {
 
-    /** the unique instance of the dialog */
-    private static CombinePrimitiveResolverDialog instance;
-
-    /**
-     * Replies the unique instance of the dialog
-     *
-     * @return the unique instance of the dialog
-     * @deprecated use {@link #launchIfNecessary} instead.
-     */
-    @Deprecated
-    public static synchronized CombinePrimitiveResolverDialog getInstance() {
-        if (instance == null) {
-            GuiHelper.runInEDTAndWait(() -> instance = new CombinePrimitiveResolverDialog(Main.parent));
-        }
-        return instance;
-    }
-
     private AutoAdjustingSplitPane spTagConflictTypes;
-    private TagConflictResolver pnlTagConflictResolver;
+    private final TagConflictResolverModel modelTagConflictResolver;
+    protected TagConflictResolver pnlTagConflictResolver;
+    private final RelationMemberConflictResolverModel modelRelConflictResolver;
     protected RelationMemberConflictResolver pnlRelationMemberConflictResolver;
+    private final CombinePrimitiveResolver primitiveResolver;
     private boolean applied;
     private JPanel pnlButtons;
     protected transient OsmPrimitive targetPrimitive;
@@ -116,12 +97,36 @@ public class CombinePrimitiveResolverDialog extends JDialog {
     private JButton btnApply;
 
     /**
-     * Replies the target primitive the collection of primitives is merged
-     * or combined to.
+     * Constructs a new {@code CombinePrimitiveResolverDialog}.
+     * @param parent The parent component in which this dialog will be displayed.
+     */
+    public CombinePrimitiveResolverDialog(Component parent) {
+        this(parent, new TagConflictResolverModel(), new RelationMemberConflictResolverModel());
+    }
+
+    /**
+     * Constructs a new {@code CombinePrimitiveResolverDialog}.
+     * @param parent The parent component in which this dialog will be displayed.
+     * @param tagModel tag conflict resolver model
+     * @param relModel relation member conflict resolver model
+     * @since 11772
+     */
+    public CombinePrimitiveResolverDialog(Component parent,
+            TagConflictResolverModel tagModel, RelationMemberConflictResolverModel relModel) {
+        super(GuiHelper.getFrameForComponent(parent), ModalityType.DOCUMENT_MODAL);
+        this.modelTagConflictResolver = tagModel;
+        this.modelRelConflictResolver = relModel;
+        this.primitiveResolver = new CombinePrimitiveResolver(tagModel, relModel);
+        build();
+    }
+
+    /**
+     * Replies the target primitive the collection of primitives is merged or combined to.
      *
      * @return the target primitive
+     * @since 11772 (naming)
      */
-    public OsmPrimitive getTargetPrimitmive() {
+    public OsmPrimitive getTargetPrimitive() {
         return targetPrimitive;
     }
 
@@ -148,6 +153,9 @@ public class CombinePrimitiveResolverDialog extends JDialog {
         }
     }
 
+    /**
+     * Updates the dialog title.
+     */
     protected void updateTitle() {
         if (targetPrimitive == null) {
             setTitle(tr("Conflicts when combining primitives"));
@@ -168,6 +176,9 @@ public class CombinePrimitiveResolverDialog extends JDialog {
         }
     }
 
+    /**
+     * Builds the components.
+     */
     protected final void build() {
         getContentPane().setLayout(new BorderLayout());
         updateTitle();
@@ -181,27 +192,43 @@ public class CombinePrimitiveResolverDialog extends JDialog {
         InputMapUtils.addEscapeAction(getRootPane(), new CancelAction());
     }
 
+    /**
+     * Builds the tag conflict resolver panel.
+     * @return the tag conflict resolver panel
+     */
     protected JPanel buildTagConflictResolverPanel() {
-        pnlTagConflictResolver = new TagConflictResolver();
+        pnlTagConflictResolver = new TagConflictResolver(modelTagConflictResolver);
         return pnlTagConflictResolver;
     }
 
+    /**
+     * Builds the relation member conflict resolver panel.
+     * @return the relation member conflict resolver panel
+     */
     protected JPanel buildRelationMemberConflictResolverPanel() {
-        pnlRelationMemberConflictResolver = new RelationMemberConflictResolver(new RelationMemberConflictResolverModel());
+        pnlRelationMemberConflictResolver = new RelationMemberConflictResolver(modelRelConflictResolver);
         return pnlRelationMemberConflictResolver;
     }
 
+    /**
+     * Builds the "Apply" action.
+     * @return the "Apply" action
+     */
     protected ApplyAction buildApplyAction() {
         return new ApplyAction();
     }
 
+    /**
+     * Builds the button panel.
+     * @return the button panel
+     */
     protected JPanel buildButtonPanel() {
         JPanel pnl = new JPanel(new FlowLayout(FlowLayout.CENTER));
 
         // -- apply button
         ApplyAction applyAction = buildApplyAction();
-        pnlTagConflictResolver.getModel().addPropertyChangeListener(applyAction);
-        pnlRelationMemberConflictResolver.getModel().addPropertyChangeListener(applyAction);
+        modelTagConflictResolver.addPropertyChangeListener(applyAction);
+        modelRelConflictResolver.addPropertyChangeListener(applyAction);
         btnApply = new JButton(applyAction);
         btnApply.setFocusable(true);
         pnl.add(btnApply);
@@ -218,20 +245,11 @@ public class CombinePrimitiveResolverDialog extends JDialog {
     }
 
     /**
-     * Constructs a new {@code CombinePrimitiveResolverDialog}.
-     * @param parent The parent component in which this dialog will be displayed.
-     */
-    public CombinePrimitiveResolverDialog(Component parent) {
-        super(GuiHelper.getFrameForComponent(parent), ModalityType.DOCUMENT_MODAL);
-        build();
-    }
-
-    /**
      * Replies the tag conflict resolver model.
      * @return The tag conflict resolver model.
      */
     public TagConflictResolverModel getTagConflictResolverModel() {
-        return pnlTagConflictResolver.getModel();
+        return modelTagConflictResolver;
     }
 
     /**
@@ -239,7 +257,7 @@ public class CombinePrimitiveResolverDialog extends JDialog {
      * @return The relation membership conflict resolver model.
      */
     public RelationMemberConflictResolverModel getRelationMemberConflictResolverModel() {
-        return pnlRelationMemberConflictResolver.getModel();
+        return modelRelConflictResolver;
     }
 
     /**
@@ -248,25 +266,18 @@ public class CombinePrimitiveResolverDialog extends JDialog {
      * @return true if all tag and relation member conflicts have been decided; false otherwise
      */
     public boolean isResolvedCompletely() {
-        return getTagConflictResolverModel().isResolvedCompletely()
-                && getRelationMemberConflictResolverModel().isResolvedCompletely();
+        return modelTagConflictResolver.isResolvedCompletely()
+            && modelRelConflictResolver.isResolvedCompletely();
     }
 
+    /**
+     * Builds the list of tag change commands.
+     * @param primitive target primitive
+     * @param tc all resolutions
+     * @return the list of tag change commands
+     */
     protected List<Command> buildTagChangeCommand(OsmPrimitive primitive, TagCollection tc) {
-        List<Command> cmds = new LinkedList<>();
-        for (String key : tc.getKeys()) {
-            if (tc.hasUniqueEmptyValue(key)) {
-                if (primitive.get(key) != null) {
-                    cmds.add(new ChangePropertyCommand(primitive, key, null));
-                }
-            } else {
-                String value = tc.getJoinedValues(key);
-                if (!value.equals(primitive.get(key))) {
-                    cmds.add(new ChangePropertyCommand(primitive, key, value));
-                }
-            }
-        }
-        return cmds;
+        return primitiveResolver.buildTagChangeCommand(primitive, tc);
     }
 
     /**
@@ -274,23 +285,8 @@ public class CombinePrimitiveResolverDialog extends JDialog {
      * @return The list of {@link Command commands} needed to apply resolution choices.
      */
     public List<Command> buildResolutionCommands() {
-        List<Command> cmds = new LinkedList<>();
-
-        TagCollection allResolutions = getTagConflictResolverModel().getAllResolutions();
-        if (!allResolutions.isEmpty()) {
-            cmds.addAll(buildTagChangeCommand(targetPrimitive, allResolutions));
-        }
-        for (String p : OsmPrimitive.getDiscardableKeys()) {
-            if (targetPrimitive.get(p) != null) {
-                cmds.add(new ChangePropertyCommand(targetPrimitive, p, null));
-            }
-        }
-
-        if (getRelationMemberConflictResolverModel().getNumDecisions() > 0) {
-            cmds.addAll(getRelationMemberConflictResolverModel().buildResolutionCommands(targetPrimitive));
-        }
-
-        Command cmd = pnlRelationMemberConflictResolver.buildTagApplyCommands(getRelationMemberConflictResolverModel()
+        List<Command> cmds = primitiveResolver.buildResolutionCommands(targetPrimitive);
+        Command cmd = pnlRelationMemberConflictResolver.buildTagApplyCommands(modelRelConflictResolver
                 .getModifiedRelations(targetPrimitive));
         if (cmd != null) {
             cmds.add(cmd);
@@ -311,30 +307,35 @@ public class CombinePrimitiveResolverDialog extends JDialog {
      * @since 11626
      */
     private void prepareDefaultDecisions(boolean fireEvent) {
-        getTagConflictResolverModel().prepareDefaultTagDecisions(fireEvent);
-        getRelationMemberConflictResolverModel().prepareDefaultRelationDecisions(fireEvent);
+        modelTagConflictResolver.prepareDefaultTagDecisions(fireEvent);
+        modelRelConflictResolver.prepareDefaultRelationDecisions(fireEvent);
     }
 
+    /**
+     * Builds empty conflicts panel.
+     * @return empty conflicts panel
+     */
     protected JPanel buildEmptyConflictsPanel() {
         JPanel pnl = new JPanel(new BorderLayout());
         pnl.add(new JLabel(tr("No conflicts to resolve")));
         return pnl;
     }
 
+    /**
+     * Prepares GUI before conflict resolution starts.
+     */
     protected void prepareGUIBeforeConflictResolutionStarts() {
-        RelationMemberConflictResolverModel relModel = getRelationMemberConflictResolverModel();
-        TagConflictResolverModel tagModel = getTagConflictResolverModel();
         getContentPane().removeAll();
 
-        if (relModel.getNumDecisions() > 0 && tagModel.getNumDecisions() > 0) {
+        if (modelRelConflictResolver.getNumDecisions() > 0 && modelTagConflictResolver.getNumDecisions() > 0) {
             // display both, the dialog for resolving relation conflicts and for resolving tag conflicts
             spTagConflictTypes.setTopComponent(pnlTagConflictResolver);
             spTagConflictTypes.setBottomComponent(pnlRelationMemberConflictResolver);
             getContentPane().add(spTagConflictTypes, BorderLayout.CENTER);
-        } else if (relModel.getNumDecisions() > 0) {
+        } else if (modelRelConflictResolver.getNumDecisions() > 0) {
             // relation conflicts only
             getContentPane().add(pnlRelationMemberConflictResolver, BorderLayout.CENTER);
-        } else if (tagModel.getNumDecisions() > 0) {
+        } else if (modelTagConflictResolver.getNumDecisions() > 0) {
             // tag conflicts only
             getContentPane().add(pnlTagConflictResolver, BorderLayout.CENTER);
         } else {
@@ -347,6 +348,10 @@ public class CombinePrimitiveResolverDialog extends JDialog {
         pnlRelationMemberConflictResolver.prepareForEditing();
     }
 
+    /**
+     * Sets whether this dialog has been closed with "Apply".
+     * @param applied {@code true} if this dialog has been closed with "Apply"
+     */
     protected void setApplied(boolean applied) {
         this.applied = applied;
     }
@@ -374,9 +379,15 @@ public class CombinePrimitiveResolverDialog extends JDialog {
         super.setVisible(visible);
     }
 
-    class CancelAction extends AbstractAction {
+    /**
+     * Cancel action.
+     */
+    protected class CancelAction extends AbstractAction {
 
-        CancelAction() {
+        /**
+         * Constructs a new {@code CancelAction}.
+         */
+        public CancelAction() {
             putValue(Action.SHORT_DESCRIPTION, tr("Cancel conflict resolution"));
             putValue(Action.NAME, tr("Cancel"));
             new ImageProvider("cancel").getResource().attachImageIcon(this);
@@ -389,8 +400,14 @@ public class CombinePrimitiveResolverDialog extends JDialog {
         }
     }
 
+    /**
+     * Apply action.
+     */
     protected class ApplyAction extends AbstractAction implements PropertyChangeListener {
 
+        /**
+         * Constructs a new {@code ApplyAction}.
+         */
         public ApplyAction() {
             putValue(Action.SHORT_DESCRIPTION, tr("Apply resolved conflicts"));
             putValue(Action.NAME, tr("Apply"));
@@ -405,9 +422,12 @@ public class CombinePrimitiveResolverDialog extends JDialog {
             pnlTagConflictResolver.rememberPreferences();
         }
 
+        /**
+         * Updates enabled state.
+         */
         protected final void updateEnabledState() {
-            setEnabled(pnlTagConflictResolver.getModel().getNumConflicts() == 0
-                    && pnlRelationMemberConflictResolver.getModel().getNumConflicts() == 0);
+            setEnabled(modelTagConflictResolver.isResolvedCompletely()
+                    && modelRelConflictResolver.isResolvedCompletely());
         }
 
         @Override
@@ -422,8 +442,8 @@ public class CombinePrimitiveResolverDialog extends JDialog {
     }
 
     private void adjustDividerLocation() {
-        int numTagDecisions = getTagConflictResolverModel().getNumDecisions();
-        int numRelationDecisions = getRelationMemberConflictResolverModel().getNumDecisions();
+        int numTagDecisions = modelTagConflictResolver.getNumDecisions();
+        int numRelationDecisions = modelRelConflictResolver.getNumDecisions();
         if (numTagDecisions > 0 && numRelationDecisions > 0) {
             double nTop = 1.0 + numTagDecisions;
             double nBottom = 2.5 + numRelationDecisions;
@@ -438,36 +458,6 @@ public class CombinePrimitiveResolverDialog extends JDialog {
         }
     }
 
-    static class AutoAdjustingSplitPane extends JSplitPane implements PropertyChangeListener, HierarchyBoundsListener {
-        private double dividerLocation;
-
-        AutoAdjustingSplitPane(int newOrientation) {
-            super(newOrientation);
-            addPropertyChangeListener(JSplitPane.DIVIDER_LOCATION_PROPERTY, this);
-            addHierarchyBoundsListener(this);
-        }
-
-        @Override
-        public void ancestorResized(HierarchyEvent e) {
-            setDividerLocation((int) (dividerLocation * getHeight()));
-        }
-
-        @Override
-        public void ancestorMoved(HierarchyEvent e) {
-            // do nothing
-        }
-
-        @Override
-        public void propertyChange(PropertyChangeEvent evt) {
-            if (JSplitPane.DIVIDER_LOCATION_PROPERTY.equals(evt.getPropertyName())) {
-                int newVal = (Integer) evt.getNewValue();
-                if (getHeight() != 0) {
-                    dividerLocation = (double) newVal / (double) getHeight();
-                }
-            }
-        }
-    }
-
     /**
      * Replies the list of {@link Command commands} needed to resolve specified conflicts,
      * by displaying if necessary a {@link CombinePrimitiveResolverDialog} to the user.
@@ -511,15 +501,25 @@ public class CombinePrimitiveResolverDialog extends JDialog {
             }
         }
 
-        List<Command> cmds = new LinkedList<>();
+        final List<Command> cmds = new LinkedList<>();
 
-        if (!GraphicsEnvironment.isHeadless()) {
-            // Build conflict resolution dialog
-            final CombinePrimitiveResolverDialog dialog = CombinePrimitiveResolverDialog.getInstance();
+        final TagConflictResolverModel tagModel = new TagConflictResolverModel();
+        final RelationMemberConflictResolverModel relModel = new RelationMemberConflictResolverModel();
 
-            dialog.getTagConflictResolverModel().populate(tagsToEdit, completeWayTags.getKeysWithMultipleValues(), false);
-            dialog.getRelationMemberConflictResolverModel().populate(parentRelations, primitives, false);
-            dialog.prepareDefaultDecisions(false);
+        tagModel.populate(tagsToEdit, completeWayTags.getKeysWithMultipleValues(), false);
+        relModel.populate(parentRelations, primitives, false);
+        tagModel.prepareDefaultTagDecisions(false);
+        relModel.prepareDefaultRelationDecisions(false);
+
+        if (tagModel.isResolvedCompletely() && relModel.isResolvedCompletely()) {
+            // Build commands without need of dialog
+            CombinePrimitiveResolver resolver = new CombinePrimitiveResolver(tagModel, relModel);
+            for (OsmPrimitive i : targetPrimitives) {
+                cmds.addAll(resolver.buildResolutionCommands(i));
+            }
+        } else if (!GraphicsEnvironment.isHeadless()) {
+            // Build conflict resolution dialog
+            final CombinePrimitiveResolverDialog dialog = new CombinePrimitiveResolverDialog(Main.parent, tagModel, relModel);
 
             // Ensure a proper title is displayed instead of a previous target (fix #7925)
             if (targetPrimitives.size() == 1) {
@@ -528,18 +528,18 @@ public class CombinePrimitiveResolverDialog extends JDialog {
                 dialog.setTargetPrimitive(null, false);
             }
 
-            // Resolve tag conflicts if necessary
-            if (!dialog.isResolvedCompletely()) {
-                GuiHelper.runInEDTAndWait(() -> {
-                    dialog.getTagConflictResolverModel().fireTableDataChanged();
-                    dialog.getRelationMemberConflictResolverModel().fireTableDataChanged();
-                    dialog.updateTitle();
-                });
-                dialog.setVisible(true);
-                if (!dialog.isApplied()) {
-                    throw new UserCancelException();
-                }
+            // Resolve tag conflicts
+            GuiHelper.runInEDTAndWait(() -> {
+                tagModel.fireTableDataChanged();
+                relModel.fireTableDataChanged();
+                dialog.updateTitle();
+            });
+            dialog.setVisible(true);
+            if (!dialog.isApplied()) {
+                throw new UserCancelException();
             }
+
+            // Build commands
             for (OsmPrimitive i : targetPrimitives) {
                 dialog.setTargetPrimitive(i, false);
                 cmds.addAll(dialog.buildResolutionCommands());
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/PasteTagsConflictResolverDialog.java b/src/org/openstreetmap/josm/gui/conflict/tags/PasteTagsConflictResolverDialog.java
index 511f7c3..863dbbd 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/PasteTagsConflictResolverDialog.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/PasteTagsConflictResolverDialog.java
@@ -57,7 +57,7 @@ public class PasteTagsConflictResolverDialog extends JDialog implements Property
         RESOLVING_TYPED_TAGCOLLECTIONS
     }
 
-    private final TagConflictResolver allPrimitivesResolver = new TagConflictResolver();
+    private final TagConflictResolverModel model = new TagConflictResolverModel();
     private final transient Map<OsmPrimitiveType, TagConflictResolver> resolvers = new EnumMap<>(OsmPrimitiveType.class);
     private final JTabbedPane tpResolvers = new JTabbedPane();
     private Mode mode;
@@ -80,8 +80,9 @@ public class PasteTagsConflictResolverDialog extends JDialog implements Property
     protected final void build() {
         setTitle(tr("Conflicts in pasted tags"));
         for (OsmPrimitiveType type: OsmPrimitiveType.dataValues()) {
-            resolvers.put(type, new TagConflictResolver());
-            resolvers.get(type).getModel().addPropertyChangeListener(this);
+            TagConflictResolverModel tagModel = new TagConflictResolverModel();
+            resolvers.put(type, new TagConflictResolver(tagModel));
+            tagModel.addPropertyChangeListener(this);
         }
         getContentPane().setLayout(new GridBagLayout());
         mode = null;
@@ -105,7 +106,6 @@ public class PasteTagsConflictResolverDialog extends JDialog implements Property
         gc.weighty = 0.0;
         getContentPane().add(buildButtonPanel(), gc);
         InputMapUtils.addEscapeAction(getRootPane(), new CancelAction());
-
     }
 
     protected JPanel buildButtonPanel() {
@@ -113,7 +113,7 @@ public class PasteTagsConflictResolverDialog extends JDialog implements Property
 
         // -- apply button
         ApplyAction applyAction = new ApplyAction();
-        allPrimitivesResolver.getModel().addPropertyChangeListener(applyAction);
+        model.addPropertyChangeListener(applyAction);
         for (TagConflictResolver r : resolvers.values()) {
             r.getModel().addPropertyChangeListener(applyAction);
         }
@@ -140,10 +140,11 @@ public class PasteTagsConflictResolverDialog extends JDialog implements Property
      * @param targetStatistics histogram of paste targets, number of primitives of each type in the paste target
      */
     protected void initResolver(OsmPrimitiveType type, TagCollection tc, Map<OsmPrimitiveType, Integer> targetStatistics) {
-        resolvers.get(type).getModel().populate(tc, tc.getKeysWithMultipleValues());
-        resolvers.get(type).getModel().prepareDefaultTagDecisions();
+        TagConflictResolver resolver = resolvers.get(type);
+        resolver.getModel().populate(tc, tc.getKeysWithMultipleValues());
+        resolver.getModel().prepareDefaultTagDecisions();
         if (!tc.isEmpty() && targetStatistics.get(type) != null && targetStatistics.get(type) > 0) {
-            tpResolvers.add(PANE_TITLES.get(type), resolvers.get(type));
+            tpResolvers.add(PANE_TITLES.get(type), resolver);
         }
     }
 
@@ -163,12 +164,12 @@ public class PasteTagsConflictResolverDialog extends JDialog implements Property
 
         // init the resolver
         //
-        allPrimitivesResolver.getModel().populate(tagsForAllPrimitives, tagsForAllPrimitives.getKeysWithMultipleValues());
-        allPrimitivesResolver.getModel().prepareDefaultTagDecisions();
+        model.populate(tagsForAllPrimitives, tagsForAllPrimitives.getKeysWithMultipleValues());
+        model.prepareDefaultTagDecisions();
 
         // prepare the dialog with one tag resolver
         pnlTagResolver.removeAll();
-        pnlTagResolver.add(allPrimitivesResolver, BorderLayout.CENTER);
+        pnlTagResolver.add(new TagConflictResolver(model), BorderLayout.CENTER);
 
         statisticsModel.reset();
         StatisticsInfo info = new StatisticsInfo();
@@ -296,7 +297,7 @@ public class PasteTagsConflictResolverDialog extends JDialog implements Property
             if (mode == null) {
                 setEnabled(false);
             } else if (mode.equals(Mode.RESOLVING_ONE_TAGCOLLECTION_ONLY)) {
-                setEnabled(allPrimitivesResolver.getModel().isResolvedCompletely());
+                setEnabled(model.isResolvedCompletely());
             } else {
                 setEnabled(resolvers.values().stream().allMatch(val -> val.getModel().isResolvedCompletely()));
             }
@@ -328,7 +329,7 @@ public class PasteTagsConflictResolverDialog extends JDialog implements Property
      * @return conflict resolution
      */
     public TagCollection getResolution() {
-        return allPrimitivesResolver.getModel().getResolution();
+        return model.getResolution();
     }
 
     public TagCollection getResolution(OsmPrimitiveType type) {
@@ -339,10 +340,10 @@ public class PasteTagsConflictResolverDialog extends JDialog implements Property
     @Override
     public void propertyChange(PropertyChangeEvent evt) {
         if (evt.getPropertyName().equals(TagConflictResolverModel.NUM_CONFLICTS_PROP)) {
-            TagConflictResolverModel model = (TagConflictResolverModel) evt.getSource();
+            TagConflictResolverModel tagModel = (TagConflictResolverModel) evt.getSource();
             for (int i = 0; i < tpResolvers.getTabCount(); i++) {
                 TagConflictResolver resolver = (TagConflictResolver) tpResolvers.getComponentAt(i);
-                if (model == resolver.getModel()) {
+                if (tagModel == resolver.getModel()) {
                     tpResolvers.setIconAt(i,
                             (Integer) evt.getNewValue() == 0 ? iconResolved : iconUnresolved
                     );
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolver.java b/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolver.java
index 9621eaf..ae977e8 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolver.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolver.java
@@ -30,9 +30,11 @@ public class TagConflictResolver extends JPanel {
 
     /**
      * Constructs a new {@code TagConflictResolver}.
+     * @param model tag conflict resolver model
+     * @since 11772
      */
-    public TagConflictResolver() {
-        this.model = new TagConflictResolverModel();
+    public TagConflictResolver(TagConflictResolverModel model) {
+        this.model = model;
         build();
     }
 
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/AbstractStackTransferHandler.java b/src/org/openstreetmap/josm/gui/datatransfer/AbstractStackTransferHandler.java
index 228fa31..54b208c 100644
--- a/src/org/openstreetmap/josm/gui/datatransfer/AbstractStackTransferHandler.java
+++ b/src/org/openstreetmap/josm/gui/datatransfer/AbstractStackTransferHandler.java
@@ -13,6 +13,7 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.gui.datatransfer.importers.AbstractOsmDataPaster;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
 
 /**
@@ -57,7 +58,7 @@ public abstract class AbstractStackTransferHandler extends TransferHandler {
                     }
                 } catch (UnsupportedFlavorException | IOException e) {
                     Main.warn(e);
-                } catch (RuntimeException e) {
+                } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
                     BugReport.intercept(e).put("paster", df).put("flavors", support::getDataFlavors).warn();
                 }
             }
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/ClipboardUtils.java b/src/org/openstreetmap/josm/gui/datatransfer/ClipboardUtils.java
index f142252..df3d954 100644
--- a/src/org/openstreetmap/josm/gui/datatransfer/ClipboardUtils.java
+++ b/src/org/openstreetmap/josm/gui/datatransfer/ClipboardUtils.java
@@ -115,7 +115,7 @@ public final class ClipboardUtils {
                             + " while getting clipboard content");
                     Thread.currentThread().interrupt();
                 }
-            } catch (NullPointerException e) {
+            } catch (NullPointerException e) { // NOPMD
                 // JDK-6322854: On Linux/X11, NPE can happen for unknown reasons, on all versions of Java
                 Main.error(e);
             }
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/OsmTransferHandler.java b/src/org/openstreetmap/josm/gui/datatransfer/OsmTransferHandler.java
index 91e9572..84f31f3 100644
--- a/src/org/openstreetmap/josm/gui/datatransfer/OsmTransferHandler.java
+++ b/src/org/openstreetmap/josm/gui/datatransfer/OsmTransferHandler.java
@@ -96,7 +96,7 @@ public class OsmTransferHandler extends AbstractStackTransferHandler {
             }
         } catch (IllegalStateException e) {
             Main.debug(e);
-        } catch (NullPointerException e) {
+        } catch (NullPointerException e) { // NOPMD
             // JDK-6322854: On Linux/X11, NPE can happen for unknown reasons, on all versions of Java
             Main.error(e);
         }
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/importers/OsmLinkPaster.java b/src/org/openstreetmap/josm/gui/datatransfer/importers/OsmLinkPaster.java
index c8f3bf7..d251c7b 100644
--- a/src/org/openstreetmap/josm/gui/datatransfer/importers/OsmLinkPaster.java
+++ b/src/org/openstreetmap/josm/gui/datatransfer/importers/OsmLinkPaster.java
@@ -13,7 +13,6 @@ import javax.swing.TransferHandler.TransferSupport;
 import org.openstreetmap.josm.actions.OpenLocationAction;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
-import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 
@@ -34,7 +33,6 @@ public class OsmLinkPaster extends AbstractOsmDataPaster {
         }
     }
 
-    private static final BooleanProperty PASTE_REFERRERS = new BooleanProperty("paste.url.download-referrers", true);
     private static final String OSM_SERVER = "^https?\\://(\\w+\\.)?(osm|openstreetmap)\\.org/";
 
     /**
@@ -67,7 +65,7 @@ public class OsmLinkPaster extends AbstractOsmDataPaster {
         return false;
     }
 
-    protected static LatLon parseLatLon(String transferData) {
+    static LatLon parseLatLon(String transferData) {
         Matcher matcher = Pattern
                 .compile(OSM_SERVER + "#map=(?<zoom>\\d+)/(?<lat>-?\\d+\\.\\d+)/(?<lon>-?\\d+\\.\\d+)$")
                 .matcher(transferData);
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java b/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java
index a6d0841..33971a7 100644
--- a/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java
+++ b/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java
@@ -25,6 +25,7 @@ import org.openstreetmap.josm.data.osm.WayData;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
 
 /**
@@ -76,7 +77,7 @@ public final class PrimitiveDataPaster extends AbstractOsmDataPaster {
                 } else if (data instanceof RelationData) {
                     updateMembers(newIds, data);
                 }
-            } catch (RuntimeException e) {
+            } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
                 throw BugReport.intercept(e).put("data", data);
             }
         }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java b/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java
index 6d555b2..0695f13 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java
@@ -547,7 +547,7 @@ public class ChangesetDialog extends ToggleDialog {
     }
 
     class ChangesetDialogPopup extends ListPopupMenu {
-        ChangesetDialogPopup(JList<?> ... lists) {
+        ChangesetDialogPopup(JList<?>... lists) {
             super(lists);
             add(selectObjectsAction);
             addSeparator();
diff --git a/src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java b/src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java
index b22a161..5d4d7a0 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java
@@ -16,6 +16,7 @@ import org.openstreetmap.josm.gui.widgets.MultiSplitLayout.Split;
 import org.openstreetmap.josm.gui.widgets.MultiSplitPane;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.Destroyable;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
 
 /**
@@ -324,7 +325,7 @@ public class DialogsPanel extends JPanel implements Destroyable {
         for (ToggleDialog t : allDialogs) {
             try {
                 t.destroy();
-            } catch (RuntimeException e) {
+            } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
                 throw BugReport.intercept(e).put("dialog", t).put("dialog-class", t.getClass());
             }
         }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java b/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java
index aff2d30..af4b9b0 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java
@@ -168,11 +168,14 @@ public class LatLonDialog extends ExtendedDialog {
     }
 
     public void setCoordinates(LatLon ll) {
-        latLonCoordinates = Optional.ofNullable(ll).orElse(LatLon.ZERO);
-        tfLatLon.setText(latLonCoordinates.latToString(CoordinateFormat.getDefaultFormat()) + ' ' +
-                         latLonCoordinates.lonToString(CoordinateFormat.getDefaultFormat()));
-        EastNorth en = Main.getProjection().latlon2eastNorth(latLonCoordinates);
+        LatLon llc = Optional.ofNullable(ll).orElse(LatLon.ZERO);
+        tfLatLon.setText(llc.latToString(CoordinateFormat.getDefaultFormat()) + ' ' +
+                         llc.lonToString(CoordinateFormat.getDefaultFormat()));
+        EastNorth en = Main.getProjection().latlon2eastNorth(llc);
         tfEastNorth.setText(Double.toString(en.east()) + ' ' + Double.toString(en.north()));
+        // Both latLonCoordinates and eastNorthCoordinates may have been reset to null if ll is out of the world
+        latLonCoordinates = llc;
+        eastNorthCoordinates = en;
         setOkEnabled(true);
     }
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java b/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java
index f853736..dde5d10 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java
@@ -354,7 +354,7 @@ public class NotesDialog extends ToggleDialog implements LayerChangeListener {
             if (noteData == null) { //there is no notes layer. Create one first
                 Main.getLayerManager().addLayer(new NoteLayer());
             }
-            Main.map.selectMapMode(new AddNoteAction(Main.map, noteData));
+            Main.map.selectMapMode(new AddNoteAction(noteData));
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/OsmIdSelectionDialog.java b/src/org/openstreetmap/josm/gui/dialogs/OsmIdSelectionDialog.java
index 61d8b2a..c86c0f6 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/OsmIdSelectionDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/OsmIdSelectionDialog.java
@@ -51,7 +51,7 @@ public class OsmIdSelectionDialog extends ExtendedDialog implements WindowListen
     protected final HistoryComboBox cbId = new HistoryComboBox();
     protected final transient GroupLayout layout = new GroupLayout(panel);
 
-    public OsmIdSelectionDialog(Component parent, String title, String ... buttonTexts) {
+    public OsmIdSelectionDialog(Component parent, String title, String... buttonTexts) {
         super(parent, title, buttonTexts);
     }
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java b/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
index 4a8615c..83879c4 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
@@ -16,6 +16,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -659,7 +660,10 @@ public class SelectionListDialog extends ToggleDialog {
         public synchronized void sort() {
             if (selection.size() <= Main.pref.getInteger("selection.no_sort_above", 100_000)) {
                 boolean quick = selection.size() > Main.pref.getInteger("selection.fast_sort_above", 10_000);
-                selection.sort(OsmPrimitiveComparator.orderingWaysRelationsNodes().thenComparing(quick
+                Comparator<OsmPrimitive> c = Main.pref.getBoolean("selection.sort_relations_before_ways", true)
+                        ? OsmPrimitiveComparator.orderingRelationsWaysNodes()
+                        : OsmPrimitiveComparator.orderingWaysRelationsNodes();
+                selection.sort(c.thenComparing(quick
                         ? OsmPrimitiveComparator.comparingUniqueId()
                         : OsmPrimitiveComparator.comparingNames()));
             }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java b/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java
index d4fef19..e2c4f6d 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java
@@ -341,7 +341,7 @@ public class UserListDialog extends ToggleDialog implements SelectionChangedList
             return false;
         }
 
-        public void selectPrimitivesOwnedBy(int ... rows) {
+        public void selectPrimitivesOwnedBy(int... rows) {
             Set<User> users = new HashSet<>();
             for (int index: rows) {
                 users.add(data.get(index).user);
@@ -356,7 +356,7 @@ public class UserListDialog extends ToggleDialog implements SelectionChangedList
             Main.getLayerManager().getEditDataSet().setSelected(byUser);
         }
 
-        public List<User> getSelectedUsers(int ... rows) {
+        public List<User> getSelectedUsers(int... rows) {
             List<User> ret = new LinkedList<>();
             if (rows == null || rows.length == 0)
                 return ret;
diff --git a/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java b/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
index 367e2f9..3af9837 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
@@ -85,8 +85,6 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
     /** Last selected element */
     private DefaultMutableTreeNode lastSelectedNode;
 
-    private transient OsmDataLayer linkedLayer;
-
     /**
      * Constructor
      */
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java
index 6bb67a0..f592dc8 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java
@@ -293,7 +293,7 @@ public class ChangesetCacheManager extends JFrame {
         actCloseSelectedChangesetsAction = new CloseSelectedChangesetsAction(model);
         actDownloadSelectedChangesets = new DownloadSelectedChangesetsAction(model);
         actDownloadSelectedContent = new DownloadSelectedChangesetContentAction(model);
-        actDownloadSelectedChangesetObjects = new DownloadSelectedChangesetObjectsAction(model);
+        actDownloadSelectedChangesetObjects = new DownloadSelectedChangesetObjectsAction();
 
         cp.add(buildToolbarPanel(), BorderLayout.NORTH);
         cp.add(buildContentPanel(), BorderLayout.CENTER);
@@ -555,7 +555,7 @@ public class ChangesetCacheManager extends JFrame {
      */
     private class DownloadSelectedChangesetObjectsAction extends AbstractAction implements ListSelectionListener {
 
-        DownloadSelectedChangesetObjectsAction(ChangesetCacheManagerModel model) {
+        DownloadSelectedChangesetObjectsAction() {
             putValue(NAME, tr("Download changed objects"));
             new ImageProvider("downloadprimitive").getResource().attachImageIcon(this);
             putValue(SHORT_DESCRIPTION, tr("Download the current version of the changed objects in the selected changesets"));
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java
index 73bd718..0bcedbb 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java
@@ -53,6 +53,7 @@ import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.bugreport.BugReportExceptionHandler;
 
 /**
@@ -234,7 +235,7 @@ public class ChangesetContentPanel extends JPanel implements PropertyChangeListe
                         }
                         GuiHelper.runInEDT(() -> HistoryBrowserDialogManager.getInstance().show(h));
                     }
-                } catch (final RuntimeException e) {
+                } catch (final JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
                     GuiHelper.runInEDT(() -> BugReportExceptionHandler.handleException(e));
                 }
             }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/layer/LayerListTransferHandler.java b/src/org/openstreetmap/josm/gui/dialogs/layer/LayerListTransferHandler.java
index 1948f76..f42715b 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/layer/LayerListTransferHandler.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/layer/LayerListTransferHandler.java
@@ -32,16 +32,17 @@ import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 public class LayerListTransferHandler extends TransferHandler {
     @Override
     public int getSourceActions(JComponent c) {
-        // we know that the source is a layer list, so don't check c.
-        LayerListModel tableModel = (LayerListModel) ((JTable) c).getModel();
-        if (tableModel.getSelectedLayers().isEmpty()) {
-            return 0;
-        }
-        int actions = MOVE;
-        if (onlyDataLayersSelected(tableModel)) {
-            actions |= COPY;
+        if (c instanceof JTable) {
+            LayerListModel tableModel = (LayerListModel) ((JTable) c).getModel();
+            if (!tableModel.getSelectedLayers().isEmpty()) {
+                int actions = MOVE;
+                if (onlyDataLayersSelected(tableModel)) {
+                    actions |= COPY;
+                }
+                return actions /* soon: | LINK*/;
+            }
         }
-        return actions /* soon: | LINK*/;
+        return NONE;
     }
 
     private static boolean onlyDataLayersSelected(LayerListModel tableModel) {
@@ -55,8 +56,11 @@ public class LayerListTransferHandler extends TransferHandler {
 
     @Override
     protected Transferable createTransferable(JComponent c) {
-        LayerListModel tableModel = (LayerListModel) ((JTable) c).getModel();
-        return new LayerTransferable(tableModel.getLayerManager(), tableModel.getSelectedLayers());
+        if (c instanceof JTable) {
+            LayerListModel tableModel = (LayerListModel) ((JTable) c).getModel();
+            return new LayerTransferable(tableModel.getLayerManager(), tableModel.getSelectedLayers());
+        }
+        return null;
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java b/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
index 2a221f0..ef4da89 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
@@ -966,7 +966,7 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
             updateEnabledState();
         }
 
-        protected void deleteTags(int ... rows) {
+        protected void deleteTags(int... rows) {
             // convert list of rows to HashMap (and find gap for nextKey)
             Map<String, String> tags = new HashMap<>(rows.length);
             int nextKeyIndex = rows[0];
@@ -989,7 +989,8 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
                     // gap found
                     nextKeyIndex++;
                 }
-                nextKey = editHelper.getDataKey(nextKeyIndex);
+                // We use unfiltered indexes here. So don't use getDataKey()
+                nextKey = (String) tagData.getValueAt(nextKeyIndex, 0);
             }
 
             Collection<OsmPrimitive> sel = Main.main.getInProgressSelection();
diff --git a/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java b/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
index aece652..70fd658 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
@@ -196,10 +196,17 @@ public class TagEditHelper {
         return tagData.getValueAt(tagTable.convertRowIndexToModel(viewRow), 0).toString();
     }
 
+    /**
+     * Determines if the given tag key is already used (by all selected primitives, not just some of them)
+     * @param key the key to check
+     * @return {@code true} if the key is used by all selected primitives (key not unset for at least one primitive)
+     */
+    @SuppressWarnings("unchecked")
     private boolean containsDataKey(String key) {
         return IntStream.range(0, tagData.getRowCount())
-                .mapToObj(i -> tagData.getValueAt(i, 0) /* sic! do not use getDataKey*/)
-                .anyMatch(key::equals);
+                .filter(i -> key.equals(tagData.getValueAt(i, 0)) /* sic! do not use getDataKey*/
+                    && !((Map<String, Integer>) tagData.getValueAt(i, 1)).containsKey("") /* sic! do not use getDataValues*/)
+                .findAny().isPresent();
     }
 
     /**
@@ -544,7 +551,7 @@ public class TagEditHelper {
         protected AutoCompletingComboBox keys;
         protected AutoCompletingComboBox values;
 
-        AbstractTagsDialog(Component parent, String title, String ... buttonTexts) {
+        AbstractTagsDialog(Component parent, String title, String... buttonTexts) {
             super(parent, title, buttonTexts);
             addMouseListener(new PopupMenuLauncher(popupMenu));
         }
@@ -865,7 +872,7 @@ public class TagEditHelper {
             destroyActions();
             for (int i = 0; i < tags.size() && count < tagsToShow; i++) {
                 final Tag t = tags.get(i);
-                boolean keyExists = keyExists(t);
+                boolean keyExists = containsDataKey(t.getKey());
                 if (keyExists && PROPERTY_RECENT_EXISTING.get() == RecentExisting.HIDE)
                     continue;
                 count++;
@@ -1073,14 +1080,15 @@ public class TagEditHelper {
             Main.main.undoRedo.undo(commandCount);
         }
 
-        private boolean keyExists(final Tag t) {
-            return valueCount.containsKey(t.getKey());
-        }
-
         private void refreshRecentTags() {
             switch (PROPERTY_REFRESH_RECENT.get()) {
-                case REFRESH: cacheRecentTags(); // break missing intentionally
-                case STATUS: suggestRecentlyAddedTags(); break;
+                case REFRESH:
+                    cacheRecentTags();
+                    suggestRecentlyAddedTags();
+                    break;
+                case STATUS:
+                    suggestRecentlyAddedTags();
+                    break;
                 default: // Do nothing
             }
         }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
index 3bf2dfd..a1b6880 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
@@ -12,6 +12,7 @@ import java.util.List;
 import java.util.Set;
 import java.util.TreeSet;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.stream.Collectors;
 
 import javax.swing.DefaultListSelectionModel;
 import javax.swing.ListSelectionModel;
@@ -44,6 +45,7 @@ import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetType;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTableModel;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
 
 public class MemberTableModel extends AbstractTableModel
@@ -254,7 +256,7 @@ implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPri
         return members.get(idx).getMember();
     }
 
-    public void moveUp(int ... selectedRows) {
+    public void moveUp(int... selectedRows) {
         if (!canMoveUp(selectedRows))
             return;
 
@@ -277,7 +279,7 @@ implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPri
         fireMakeMemberVisible(selectedRows[0] - 1);
     }
 
-    public void moveDown(int ... selectedRows) {
+    public void moveDown(int... selectedRows) {
         if (!canMoveDown(selectedRows))
             return;
 
@@ -302,7 +304,7 @@ implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPri
         fireMakeMemberVisible(selectedRows[0] + 1);
     }
 
-    public void remove(int ... selectedRows) {
+    public void remove(int... selectedRows) {
         if (!canRemove(selectedRows))
             return;
         int offset = 0;
@@ -316,21 +318,21 @@ implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPri
         fireTableDataChanged();
     }
 
-    public boolean canMoveUp(int ... rows) {
+    public boolean canMoveUp(int... rows) {
         if (rows == null || rows.length == 0)
             return false;
         Arrays.sort(rows);
         return rows[0] > 0 && !members.isEmpty();
     }
 
-    public boolean canMoveDown(int ... rows) {
+    public boolean canMoveDown(int... rows) {
         if (rows == null || rows.length == 0)
             return false;
         Arrays.sort(rows);
         return !members.isEmpty() && rows[rows.length - 1] < members.size() - 1;
     }
 
-    public boolean canRemove(int ... rows) {
+    public boolean canRemove(int... rows) {
         if (rows == null || rows.length == 0)
             return false;
         return true;
@@ -356,7 +358,8 @@ implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPri
      * @param relation relation
      */
     public void applyToRelation(Relation relation) {
-        relation.setMembers(members);
+        relation.setMembers(members.stream()
+                .filter(rm -> !rm.getMember().isDeleted()).collect(Collectors.toList()));
     }
 
     public boolean hasSameMembersAs(Relation relation) {
@@ -805,7 +808,7 @@ implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPri
                 connectionType = wayConnectionTypeCalculator.updateLinks(members);
             }
             return connectionType.get(i);
-        } catch (RuntimeException e) {
+        } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
             throw BugReport.intercept(e).put("i", i).put("members", members).put("relation", relation);
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/PasteMembersAction.java b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/PasteMembersAction.java
index 5dab2e7..7c49625 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/PasteMembersAction.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/PasteMembersAction.java
@@ -4,6 +4,7 @@ package org.openstreetmap.josm.gui.dialogs.relation.actions;
 import java.awt.datatransfer.FlavorEvent;
 import java.awt.datatransfer.FlavorListener;
 import java.awt.event.ActionEvent;
+import java.util.Optional;
 
 import javax.swing.TransferHandler.TransferSupport;
 
@@ -41,7 +42,8 @@ public class PasteMembersAction extends AddFromSelectionAction implements Flavor
     }
 
     private TransferSupport getSupport() {
-        return new TransferSupport(memberTable, ClipboardUtils.getClipboardContent());
+        return new TransferSupport(memberTable, Optional.ofNullable(ClipboardUtils.getClipboardContent())
+                .orElseThrow(() -> new IllegalStateException("Failed to retrieve clipboard content")));
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java
index 4029d78..a556741 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java
@@ -104,8 +104,10 @@ abstract class SavingAction extends AbstractRelationEditorAction {
         Relation editedRelation = new Relation(editor.getRelation());
         tagEditorModel.applyToPrimitive(editedRelation);
         memberTableModel.applyToRelation(editedRelation);
-        Main.main.undoRedo.add(new ChangeCommand(editor.getRelation(), editedRelation));
-        layer.data.fireSelectionChanged();
+        if (!editedRelation.hasEqualSemanticAttributes(editor.getRelation(), false)) {
+            Main.main.undoRedo.add(new ChangeCommand(editor.getRelation(), editedRelation));
+            layer.data.fireSelectionChanged();
+        }
     }
 
     protected boolean confirmClosingBecauseOfDirtyState() {
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculator.java b/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculator.java
index ab488ff..15d2558 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculator.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculator.java
@@ -12,6 +12,7 @@ import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionType.Direction;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
 
 public class WayConnectionTypeCalculator {
@@ -43,7 +44,7 @@ public class WayConnectionTypeCalculator {
         for (int i = 0; i < members.size(); ++i) {
             try {
                 lastWct = updateLinksFor(con, lastWct, i);
-            } catch (RuntimeException e) {
+            } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
                 int index = i;
                 throw BugReport.intercept(e).put("i", i).put("member", () -> members.get(index)).put("con", con);
             }
diff --git a/src/org/openstreetmap/josm/gui/download/DownloadDialog.java b/src/org/openstreetmap/josm/gui/download/DownloadDialog.java
index 38ab686..60e1a79 100644
--- a/src/org/openstreetmap/josm/gui/download/DownloadDialog.java
+++ b/src/org/openstreetmap/josm/gui/download/DownloadDialog.java
@@ -62,6 +62,7 @@ public class DownloadDialog extends JDialog {
     private static final BooleanProperty DOWNLOAD_GPS = new BooleanProperty("download.gps", false);
     private static final BooleanProperty DOWNLOAD_NOTES = new BooleanProperty("download.notes", false);
     private static final BooleanProperty DOWNLOAD_NEWLAYER = new BooleanProperty("download.newlayer", false);
+    private static final BooleanProperty DOWNLOAD_ZOOMTODATA = new BooleanProperty("download.zoomtodata", true);
 
     /** the unique instance of the download dialog */
     private static DownloadDialog instance;
@@ -83,6 +84,7 @@ public class DownloadDialog extends JDialog {
     protected final JTabbedPane tpDownloadAreaSelectors = new JTabbedPane();
     protected JCheckBox cbNewLayer;
     protected JCheckBox cbStartup;
+    protected JCheckBox cbZoomToDownloadedData;
     protected final JLabel sizeCheck = new JLabel();
     protected transient Bounds currentBounds;
     protected boolean canceled;
@@ -160,8 +162,14 @@ public class DownloadDialog extends JDialog {
                         "You can open it manually from File menu or toolbar.</html>"));
         cbStartup.addActionListener(e -> DOWNLOAD_AUTORUN.put(cbStartup.isSelected()));
 
+        cbZoomToDownloadedData = new JCheckBox(tr("Zoom to downloaded data"));
+        cbZoomToDownloadedData.setToolTipText(tr("Select to zoom to entire newly downloaded data."));
+
         pnl.add(cbNewLayer, GBC.std().anchor(GBC.WEST).insets(5, 5, 5, 5));
         pnl.add(cbStartup, GBC.std().anchor(GBC.WEST).insets(15, 5, 5, 5));
+        pnl.add(cbZoomToDownloadedData, GBC.std().anchor(GBC.WEST).insets(15, 5, 5, 5));
+
+        ExpertToggleAction.addVisibilitySwitcher(cbZoomToDownloadedData);
 
         pnl.add(sizeCheck, GBC.eol().anchor(GBC.EAST).insets(5, 5, 5, 2));
 
@@ -191,6 +199,8 @@ public class DownloadDialog extends JDialog {
         InputMapUtils.addEnterActionWhenAncestor(cbDownloadOsmData, actDownload);
         InputMapUtils.addEnterActionWhenAncestor(cbDownloadNotes, actDownload);
         InputMapUtils.addEnterActionWhenAncestor(cbNewLayer, actDownload);
+        InputMapUtils.addEnterActionWhenAncestor(cbStartup, actDownload);
+        InputMapUtils.addEnterActionWhenAncestor(cbZoomToDownloadedData, actDownload);
 
         // -- cancel button
         JButton btnCancel;
@@ -338,6 +348,16 @@ public class DownloadDialog extends JDialog {
     }
 
     /**
+     * Replies true if the user requires to zoom to new downloaded data
+     *
+     * @return true if the user requires to zoom to new downloaded data
+     * @since 11658
+     */
+    public boolean isZoomToDownloadedDataRequired() {
+        return cbZoomToDownloadedData.isSelected();
+    }
+
+    /**
      * Adds a new download area selector to the download dialog
      *
      * @param selector the download are selector
@@ -366,6 +386,7 @@ public class DownloadDialog extends JDialog {
         DOWNLOAD_GPS.put(cbDownloadGpxData.isSelected());
         DOWNLOAD_NOTES.put(cbDownloadNotes.isSelected());
         DOWNLOAD_NEWLAYER.put(cbNewLayer.isSelected());
+        DOWNLOAD_ZOOMTODATA.put(cbZoomToDownloadedData.isSelected());
         if (currentBounds != null) {
             Main.pref.put("osm-download.bounds", currentBounds.encodeAsString(";"));
         }
@@ -380,6 +401,7 @@ public class DownloadDialog extends JDialog {
         cbDownloadNotes.setSelected(DOWNLOAD_NOTES.get());
         cbNewLayer.setSelected(DOWNLOAD_NEWLAYER.get());
         cbStartup.setSelected(isAutorunEnabled());
+        cbZoomToDownloadedData.setSelected(DOWNLOAD_ZOOMTODATA.get());
         int idx = Utils.clamp(DOWNLOAD_TAB.get(), 0, tpDownloadAreaSelectors.getTabCount() - 1);
         tpDownloadAreaSelectors.setSelectedIndex(idx);
 
diff --git a/src/org/openstreetmap/josm/gui/draw/MapViewPath.java b/src/org/openstreetmap/josm/gui/draw/MapViewPath.java
index 3cdae85..13300a0 100644
--- a/src/org/openstreetmap/josm/gui/draw/MapViewPath.java
+++ b/src/org/openstreetmap/josm/gui/draw/MapViewPath.java
@@ -4,6 +4,7 @@ package org.openstreetmap.josm.gui.draw;
 import java.awt.BasicStroke;
 import java.awt.Shape;
 import java.awt.Stroke;
+import java.awt.geom.Path2D;
 import java.awt.geom.PathIterator;
 
 import org.openstreetmap.josm.data.coor.EastNorth;
@@ -13,7 +14,6 @@ import org.openstreetmap.josm.gui.MapViewState;
 import org.openstreetmap.josm.gui.MapViewState.MapViewPoint;
 import org.openstreetmap.josm.gui.MapViewState.MapViewRectangle;
 
-
 /**
  * This is a version of a java Path2D that allows you to add points to it by simply giving their east/north, lat/lon or node coordinates.
  * <p>
@@ -43,6 +43,15 @@ public class MapViewPath extends MapPath2D {
     }
 
     /**
+     * Gets the map view state this path is used for.
+     * @return The state.
+     * @since 11748
+     */
+    public MapViewState getMapViewState() {
+        return state;
+    }
+
+    /**
      * Move the cursor to the given node.
      * @param n The node
      * @return this for easy chaining.
@@ -170,6 +179,42 @@ public class MapViewPath extends MapPath2D {
     }
 
     /**
+     * Converts a path in east/north coordinates to view space.
+     * @param path The path
+     * @since 11748
+     */
+    public void appendFromEastNorth(Path2D.Double path) {
+        new PathVisitor() {
+            @Override
+            public void visitMoveTo(double x, double y) {
+                moveTo(new EastNorth(x, y));
+            }
+
+            @Override
+            public void visitLineTo(double x, double y) {
+                lineTo(new EastNorth(x, y));
+            }
+
+            @Override
+            public void visitClose() {
+                closePath();
+            }
+        }.visit(path);
+    }
+
+    /**
+     * Visits all segments of this path.
+     * @param consumer The consumer to send path segments to
+     * @return the total line length
+     * @since 11748
+     */
+    public double visitLine(PathSegmentConsumer consumer) {
+        LineVisitor visitor = new LineVisitor(consumer);
+        visitor.visit(this);
+        return visitor.inLineOffset;
+    }
+
+    /**
      * Compute a line that is similar to the current path expect for that parts outside the screen are skipped using moveTo commands.
      *
      * The line is computed in a way that dashes stay in their place when moving the view.
@@ -228,6 +273,14 @@ public class MapViewPath extends MapPath2D {
             .visit(this);
     }
 
+    /**
+     * Gets the length of the way in visual space.
+     * @return The length.
+     * @since 11748
+     */
+    public double getLength() {
+        return visitLine((inLineOffset, start, end, startIsOldEnd) -> { });
+    }
 
     /**
      * This class is used to visit the segments of this path.
@@ -245,41 +298,17 @@ public class MapViewPath extends MapPath2D {
          * @param startIsOldEnd If the start point equals the last end point.
          */
         void addLineBetween(double inLineOffset, MapViewPoint start, MapViewPoint end, boolean startIsOldEnd);
-
     }
 
-    private class ClampingPathVisitor {
-        private final MapViewRectangle clip;
-        private final PathSegmentConsumer consumer;
-        protected double strokeProgress;
-        private final double strokeLength;
-        private MapViewPoint lastMoveTo;
-
-        private MapViewPoint cursor;
-        private boolean cursorIsActive;
-
-        /**
-         * Create a new {@link ClampingPathVisitor}
-         * @param clip View clip rectangle
-         * @param strokeOffset Initial stroke offset
-         * @param strokeLength Total length of a stroke sequence
-         * @param consumer The consumer to notify of the path segments.
-         */
-        ClampingPathVisitor(MapViewRectangle clip, double strokeOffset, double strokeLength, PathSegmentConsumer consumer) {
-            this.clip = clip;
-            this.strokeProgress = Math.min(strokeLength - strokeOffset, 0);
-            this.strokeLength = strokeLength;
-            this.consumer = consumer;
-        }
-
+    private interface PathVisitor {
         /**
          * Append a path to this one. The path is clipped to the current view.
-         * @param mapViewPath The iterator
+         * @param path The iterator
          * @return true if adding the path was successful.
          */
-        public boolean visit(MapViewPath mapViewPath) {
+        default boolean visit(Path2D.Double path) {
             double[] coords = new double[8];
-            PathIterator it = mapViewPath.getPathIterator(null);
+            PathIterator it = path.getPathIterator(null);
             while (!it.isDone()) {
                 int type = it.currentSegment(coords);
                 switch (type) {
@@ -293,7 +322,7 @@ public class MapViewPath extends MapPath2D {
                     visitMoveTo(coords[0], coords[1]);
                     break;
                 default:
-                    // cannot handle this shape - this should be very rare. We let Java2D do the clipping.
+                    // cannot handle this shape - this should be very rare and not happening in OSM draw code.
                     return false;
                 }
                 it.next();
@@ -301,22 +330,94 @@ public class MapViewPath extends MapPath2D {
             return true;
         }
 
-        void visitClose() {
-            drawLineTo(lastMoveTo);
+        void visitClose();
+
+        void visitMoveTo(double x, double y);
+
+        void visitLineTo(double x, double y);
+    }
+
+    private abstract class AbstractMapPathVisitor implements PathVisitor {
+        private MapViewPoint lastMoveTo;
+
+        @Override
+        public void visitMoveTo(double x, double y) {
+            MapViewPoint move = state.getForView(x, y);
+            lastMoveTo = move;
+            visitMoveTo(move);
         }
 
-        void visitMoveTo(double x, double y) {
-            MapViewPoint point = state.getForView(x, y);
-            lastMoveTo = point;
-            cursor = point;
-            cursorIsActive = false;
+        abstract void visitMoveTo(MapViewPoint p);
+
+        @Override
+        public void visitLineTo(double x, double y) {
+            visitLineTo(state.getForView(x, y));
+        }
+
+        abstract void visitLineTo(MapViewPoint p);
+
+        @Override
+        public void visitClose() {
+            visitLineTo(lastMoveTo);
+        }
+    }
+
+    private final class LineVisitor extends AbstractMapPathVisitor {
+        private final PathSegmentConsumer consumer;
+        private MapViewPoint last;
+        private double inLineOffset;
+        private boolean startIsOldEnd;
+
+        LineVisitor(PathSegmentConsumer consumer) {
+            this.consumer = consumer;
+        }
+
+        @Override
+        void visitMoveTo(MapViewPoint p) {
+            last = p;
+            startIsOldEnd = false;
+        }
+
+        @Override
+        void visitLineTo(MapViewPoint p) {
+            consumer.addLineBetween(inLineOffset, last, p, startIsOldEnd);
+            inLineOffset += last.distanceToInView(p);
+            last = p;
+            startIsOldEnd = true;
+        }
+    }
+
+    private class ClampingPathVisitor extends AbstractMapPathVisitor {
+        private final MapViewRectangle clip;
+        private final PathSegmentConsumer consumer;
+        protected double strokeProgress;
+        private final double strokeLength;
+
+        private MapViewPoint cursor;
+        private boolean cursorIsActive;
+
+        /**
+         * Create a new {@link ClampingPathVisitor}
+         * @param clip View clip rectangle
+         * @param strokeOffset Initial stroke offset
+         * @param strokeLength Total length of a stroke sequence
+         * @param consumer The consumer to notify of the path segments.
+         */
+        ClampingPathVisitor(MapViewRectangle clip, double strokeOffset, double strokeLength, PathSegmentConsumer consumer) {
+            this.clip = clip;
+            this.strokeProgress = Math.min(strokeLength - strokeOffset, 0);
+            this.strokeLength = strokeLength;
+            this.consumer = consumer;
         }
 
-        void visitLineTo(double x, double y) {
-            drawLineTo(state.getForView(x, y));
+        @Override
+        void visitMoveTo(MapViewPoint point) {
+            cursor = point;
+            cursorIsActive = false;
         }
 
-        private void drawLineTo(MapViewPoint next) {
+        @Override
+        void visitLineTo(MapViewPoint next) {
             MapViewPoint entry = clip.getLineEntry(cursor, next);
             if (entry != null) {
                 MapViewPoint exit = clip.getLineEntry(next, cursor);
@@ -347,4 +448,5 @@ public class MapViewPath extends MapPath2D {
             return entry.interpolate(originalStart, offset / distance);
         }
     }
+
 }
diff --git a/src/org/openstreetmap/josm/gui/draw/MapViewPositionAndRotation.java b/src/org/openstreetmap/josm/gui/draw/MapViewPositionAndRotation.java
new file mode 100644
index 0000000..54ee0c8
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/draw/MapViewPositionAndRotation.java
@@ -0,0 +1,49 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.draw;
+
+import org.openstreetmap.josm.gui.MapViewState.MapViewPoint;
+
+/**
+ * A map view point combined with a rotation angle.
+ *
+ * @author Michael Zangl
+ * @since 11748
+ */
+public class MapViewPositionAndRotation {
+
+    private final MapViewPoint point;
+
+    private final double theta;
+
+    /**
+     * Create a new {@link MapViewPositionAndRotation}
+     * @param point the point
+     * @param theta the rotation
+     */
+    public MapViewPositionAndRotation(MapViewPoint point, double theta) {
+        super();
+        this.point = point;
+        this.theta = theta;
+    }
+
+    /**
+     * Gets the point.
+     * @return The point
+     */
+    public MapViewPoint getPoint() {
+        return point;
+    }
+
+    /**
+     * Gets the rotation
+     * @return the rotation
+     */
+    public double getRotation() {
+        return theta;
+    }
+
+    @Override
+    public String toString() {
+        return "MapViewPositionAndRotation [" + point + ", theta=" + theta + "]";
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialog.java b/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialog.java
index 2943443..ff143e6 100644
--- a/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialog.java
+++ b/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialog.java
@@ -103,7 +103,6 @@ public class HistoryBrowserDialog extends JDialog implements HistoryDataSetListe
         pnl.add(btn);
 
         btn = new JButton(closeAction);
-        final String closeHistoryBrowserDialogKey = "CloseHistoryBrowserDialog";
         btn.setName("btn.close");
         pnl.add(btn);
         InputMapUtils.addEscapeAction(getRootPane(), closeAction);
@@ -147,7 +146,9 @@ public class HistoryBrowserDialog extends JDialog implements HistoryDataSetListe
 
     @Override
     public void historyDataSetCleared(HistoryDataSet source) {
-        closeAction.run();
+        if (isVisible()) {
+            closeAction.run();
+        }
     }
 
     class CloseAction extends AbstractAction {
@@ -157,7 +158,7 @@ public class HistoryBrowserDialog extends JDialog implements HistoryDataSetListe
             new ImageProvider("ok").getResource().attachImageIcon(this);
         }
 
-        public void run() {
+        void run() {
             getHistoryBrowser().getModel().unlinkAsListener();
             HistoryDataSet.getInstance().removeHistoryDataSetListener(HistoryBrowserDialog.this);
             HistoryBrowserDialogManager.getInstance().hide(HistoryBrowserDialog.this);
@@ -187,7 +188,9 @@ public class HistoryBrowserDialog extends JDialog implements HistoryDataSetListe
     class WindowClosingAdapter extends WindowAdapter {
         @Override
         public void windowClosing(WindowEvent e) {
-            closeAction.run();
+            if (isVisible()) {
+                closeAction.run();
+            }
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java b/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java
index af125c8..d4182d9 100644
--- a/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java
+++ b/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java
@@ -26,6 +26,7 @@ import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 import org.openstreetmap.josm.tools.WindowGeometry;
 import org.openstreetmap.josm.tools.bugreport.BugReportExceptionHandler;
@@ -223,7 +224,7 @@ public final class HistoryBrowserDialogManager implements LayerChangeListener {
                     }
                     SwingUtilities.invokeLater(() -> show(h));
                 }
-            } catch (final RuntimeException e) {
+            } catch (final JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
                 BugReportExceptionHandler.handleException(e);
             }
         };
diff --git a/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java b/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
index 0d6f514..a1091ec 100644
--- a/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
+++ b/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
@@ -3,19 +3,13 @@ package org.openstreetmap.josm.gui.history;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.text.DateFormat;
-import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Set;
 
 import javax.swing.JTable;
-import javax.swing.table.AbstractTableModel;
 import javax.swing.table.TableModel;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
@@ -47,7 +41,6 @@ import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListen
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.util.ChangeNotifier;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
-import org.openstreetmap.josm.tools.date.DateUtils;
 
 /**
  * This is the model used by the history browser.
@@ -97,9 +90,9 @@ public class HistoryBrowserModel extends ChangeNotifier implements ActiveLayerCh
      * constructor
      */
     public HistoryBrowserModel() {
-        versionTableModel = new VersionTableModel();
-        currentTagTableModel = new TagTableModel(PointInTimeType.CURRENT_POINT_IN_TIME);
-        referenceTagTableModel = new TagTableModel(PointInTimeType.REFERENCE_POINT_IN_TIME);
+        versionTableModel = new VersionTableModel(this);
+        currentTagTableModel = new TagTableModel(this, PointInTimeType.CURRENT_POINT_IN_TIME);
+        referenceTagTableModel = new TagTableModel(this, PointInTimeType.REFERENCE_POINT_IN_TIME);
         referenceNodeListTableModel = new DiffTableModel();
         currentNodeListTableModel = new DiffTableModel();
         currentRelationMemberTableModel = new DiffTableModel();
@@ -134,7 +127,7 @@ public class HistoryBrowserModel extends ChangeNotifier implements ActiveLayerCh
         return history;
     }
 
-    protected boolean canShowAsLatest(OsmPrimitive primitive) {
+    private boolean canShowAsLatest(OsmPrimitive primitive) {
         if (primitive == null)
             return false;
         if (primitive.isNew() || !primitive.isUsable())
@@ -196,7 +189,7 @@ public class HistoryBrowserModel extends ChangeNotifier implements ActiveLayerCh
         fireModelChange();
     }
 
-    protected void fireModelChange() {
+    private void fireModelChange() {
         initNodeListTableModels();
         initMemberListTableModels();
         fireStateChanged();
@@ -213,7 +206,7 @@ public class HistoryBrowserModel extends ChangeNotifier implements ActiveLayerCh
         return versionTableModel;
     }
 
-    protected void initTagTableModels() {
+    private void initTagTableModels() {
         currentTagTableModel.initKeyList();
         referenceTagTableModel.initKeyList();
     }
@@ -222,7 +215,7 @@ public class HistoryBrowserModel extends ChangeNotifier implements ActiveLayerCh
      * Should be called everytime either reference of current changes to update the diff.
      * TODO: Maybe rename to reflect this? eg. updateNodeListTableModels
      */
-    protected void initNodeListTableModels() {
+    private void initNodeListTableModels() {
         if (current == null || current.getType() != OsmPrimitiveType.WAY
          || reference == null || reference.getType() != OsmPrimitiveType.WAY)
             return;
@@ -233,7 +226,7 @@ public class HistoryBrowserModel extends ChangeNotifier implements ActiveLayerCh
         currentNodeListTableModel.setRows(diff.currentDiff, false);
     }
 
-    protected void initMemberListTableModels() {
+    private void initMemberListTableModels() {
         if (current == null || current.getType() != OsmPrimitiveType.RELATION
          || reference == null || reference.getType() != OsmPrimitiveType.RELATION)
             return;
@@ -396,262 +389,120 @@ public class HistoryBrowserModel extends ChangeNotifier implements ActiveLayerCh
     }
 
     /**
-     * The table model for the list of versions in the current history
-     *
+     * Sets the reference point in time to the given row.
+     * @param row row number
      */
-    public final class VersionTableModel extends AbstractTableModel {
-
-        private VersionTableModel() {
-        }
-
-        @Override
-        public int getRowCount() {
-            if (history == null)
-                return 0;
-            int ret = history.getNumVersions();
+    public void setReferencePointInTime(int row) {
+        if (history == null)
+            return;
+        if (row == history.getNumVersions()) {
             if (latest != null) {
-                ret++;
-            }
-            return ret;
-        }
-
-        @Override
-        public Object getValueAt(int row, int column) {
-            switch (column) {
-            case VersionTableColumnModel.COL_VERSION:
-                HistoryOsmPrimitive p1 = getPrimitive(row);
-                if (p1 != null)
-                    return Long.toString(p1.getVersion());
-                return null;
-            case VersionTableColumnModel.COL_REFERENCE:
-                return isReferencePointInTime(row);
-            case VersionTableColumnModel.COL_CURRENT:
-                return isCurrentPointInTime(row);
-            case VersionTableColumnModel.COL_DATE:
-                HistoryOsmPrimitive p3 = getPrimitive(row);
-                if (p3 != null && p3.getTimestamp() != null)
-                    return DateUtils.formatDateTime(p3.getTimestamp(), DateFormat.SHORT, DateFormat.SHORT);
-                return null;
-            case VersionTableColumnModel.COL_USER:
-                HistoryOsmPrimitive p4 = getPrimitive(row);
-                if (p4 != null) {
-                    User user = p4.getUser();
-                    if (user != null)
-                        return user.getName();
-                }
-                return null;
-            case VersionTableColumnModel.COL_EDITOR:
-                HistoryOsmPrimitive p5 = getPrimitive(row);
-                if (p5 != null) {
-                    Changeset cs = p5.getChangeset();
-                    if (cs != null) {
-                        return cs.get("created_by");
-                    }
-                }
-                return null;
-            }
-            return null;
-        }
-
-        @Override
-        public void setValueAt(Object aValue, int row, int column) {
-            if (!((Boolean) aValue))
-                return;
-            switch (column) {
-            case 1:
-                setReferencePointInTime(row);
-                break;
-            case 2:
-                setCurrentPointInTime(row);
-                break;
-            default:
-                return;
-            }
-            fireTableDataChanged();
-        }
-
-        @Override
-        public boolean isCellEditable(int row, int column) {
-            return column >= 1 && column <= 2;
-        }
-
-        public void setReferencePointInTime(int row) {
-            if (history == null)
-                return;
-            if (row == history.getNumVersions()) {
-                if (latest != null) {
-                    HistoryBrowserModel.this.setReferencePointInTime(latest);
-                }
-                return;
-            }
-            if (row < 0 || row > history.getNumVersions())
-                return;
-            HistoryOsmPrimitive reference = history.get(row);
-            HistoryBrowserModel.this.setReferencePointInTime(reference);
-        }
-
-        public void setCurrentPointInTime(int row) {
-            if (history == null)
-                return;
-            if (row == history.getNumVersions()) {
-                if (latest != null) {
-                    HistoryBrowserModel.this.setCurrentPointInTime(latest);
-                }
-                return;
+                setReferencePointInTime(latest);
             }
-            if (row < 0 || row > history.getNumVersions())
-                return;
-            HistoryOsmPrimitive current = history.get(row);
-            HistoryBrowserModel.this.setCurrentPointInTime(current);
-        }
-
-        public boolean isReferencePointInTime(int row) {
-            if (history == null)
-                return false;
-            if (row == history.getNumVersions())
-                return latest == reference;
-            if (row < 0 || row > history.getNumVersions())
-                return false;
-            HistoryOsmPrimitive p = history.get(row);
-            return p == reference;
-        }
-
-        public boolean isCurrentPointInTime(int row) {
-            if (history == null)
-                return false;
-            if (row == history.getNumVersions())
-                return latest == current;
-            if (row < 0 || row > history.getNumVersions())
-                return false;
-            HistoryOsmPrimitive p = history.get(row);
-            return p == current;
-        }
-
-        public HistoryOsmPrimitive getPrimitive(int row) {
-            if (history == null)
-                return null;
-            return isLatest(row) ? latest : history.get(row);
-        }
-
-        public boolean isLatest(int row) {
-            return row >= history.getNumVersions();
-        }
-
-        public OsmPrimitive getLatest() {
-            if (latest == null)
-                return null;
-            OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
-            if (editLayer == null)
-                return null;
-            return editLayer.data.getPrimitiveById(latest.getId(), latest.getType());
-        }
-
-        @Override
-        public int getColumnCount() {
-            return 6;
+            return;
         }
+        if (row < 0 || row > history.getNumVersions())
+            return;
+        setReferencePointInTime(history.get(row));
     }
 
     /**
-     * The table model for the tags of the version at {@link PointInTimeType#REFERENCE_POINT_IN_TIME}
-     * or {@link PointInTimeType#CURRENT_POINT_IN_TIME}
-     *
+     * Sets the current point in time to the given row.
+     * @param row row number
      */
-    public class TagTableModel extends AbstractTableModel {
-
-        private List<String> keys;
-        private final PointInTimeType pointInTimeType;
-
-        protected TagTableModel(PointInTimeType type) {
-            pointInTimeType = type;
-            initKeyList();
-        }
-
-        protected void initKeyList() {
-            Set<String> keySet = new HashSet<>();
-            if (current != null) {
-                keySet.addAll(current.getTags().keySet());
-            }
-            if (reference != null) {
-                keySet.addAll(reference.getTags().keySet());
+    public void setCurrentPointInTime(int row) {
+        if (history == null)
+            return;
+        if (row == history.getNumVersions()) {
+            if (latest != null) {
+                setCurrentPointInTime(latest);
             }
-            keys = new ArrayList<>(keySet);
-            Collections.sort(keys);
-            fireTableDataChanged();
-        }
-
-        @Override
-        public int getRowCount() {
-            if (keys == null)
-                return 0;
-            return keys.size();
-        }
-
-        @Override
-        public Object getValueAt(int row, int column) {
-            return getKeyAt(row);
-        }
-
-        /**
-         * Get the key for the given row.
-         * @param row The row
-         * @return The key in that row.
-         * @since 10637
-         */
-        public String getKeyAt(int row) {
-            return keys.get(row);
-        }
-
-        public boolean hasTag(String key) {
-            HistoryOsmPrimitive primitive = getPointInTime(pointInTimeType);
-            return primitive != null && primitive.hasKey(key);
-        }
-
-        public String getValue(String key) {
-            HistoryOsmPrimitive primitive = getPointInTime(pointInTimeType);
-            if (primitive == null)
-                return null;
-            return primitive.get(key);
+            return;
         }
+        if (row < 0 || row > history.getNumVersions())
+            return;
+        setCurrentPointInTime(history.get(row));
+    }
 
-        public boolean oppositeHasTag(String key) {
-            PointInTimeType opposite = pointInTimeType.opposite();
-            HistoryOsmPrimitive primitive = getPointInTime(opposite);
-            return primitive != null && primitive.hasKey(key);
-        }
+    /**
+     * Determines if the given row is the reference point in time.
+     * @param row row number
+     * @return {@code true} if the given row is the reference point in time
+     */
+    public boolean isReferencePointInTime(int row) {
+        if (history == null)
+            return false;
+        if (row == history.getNumVersions())
+            return latest == reference;
+        if (row < 0 || row > history.getNumVersions())
+            return false;
+        return history.get(row) == reference;
+    }
 
-        public String getOppositeValue(String key) {
-            PointInTimeType opposite = pointInTimeType.opposite();
-            HistoryOsmPrimitive primitive = getPointInTime(opposite);
-            if (primitive == null)
-                return null;
-            return primitive.get(key);
-        }
+    /**
+     * Determines if the given row is the current point in time.
+     * @param row row number
+     * @return {@code true} if the given row is the current point in time
+     */
+    public boolean isCurrentPointInTime(int row) {
+        if (history == null)
+            return false;
+        if (row == history.getNumVersions())
+            return latest == current;
+        if (row < 0 || row > history.getNumVersions())
+            return false;
+        return history.get(row) == current;
+    }
 
-        public boolean hasSameValueAsOpposite(String key) {
-            String value = getValue(key);
-            String oppositeValue = getOppositeValue(key);
-            return value != null && value.equals(oppositeValue);
-        }
+    /**
+     * Returns the {@code HistoryPrimitive} at the given row.
+     * @param row row number
+     * @return the {@code HistoryPrimitive} at the given row
+     */
+    public HistoryOsmPrimitive getPrimitive(int row) {
+        if (history == null)
+            return null;
+        return isLatest(row) ? latest : history.get(row);
+    }
 
-        public PointInTimeType getPointInTimeType() {
-            return pointInTimeType;
-        }
+    /**
+     * Determines if the given row is the latest.
+     * @param row row number
+     * @return {@code true} if the given row is the latest
+     */
+    public boolean isLatest(int row) {
+        return row >= history.getNumVersions();
+    }
 
-        public boolean isCurrentPointInTime() {
-            return pointInTimeType.equals(PointInTimeType.CURRENT_POINT_IN_TIME);
-        }
+    /**
+     * Returns the latest {@code HistoryOsmPrimitive}.
+     * @return the latest {@code HistoryOsmPrimitive}
+     * @since 11646
+     */
+    public HistoryOsmPrimitive getLatest() {
+        return latest;
+    }
 
-        public boolean isReferencePointInTime() {
-            return pointInTimeType.equals(PointInTimeType.REFERENCE_POINT_IN_TIME);
+    /**
+     * Returns the key set (union of current and reference point in type key sets).
+     * @return the key set (union of current and reference point in type key sets)
+     * @since 11647
+     */
+    public Set<String> getKeySet() {
+        Set<String> keySet = new HashSet<>();
+        if (current != null) {
+            keySet.addAll(current.getTags().keySet());
         }
-
-        @Override
-        public int getColumnCount() {
-            return 2;
+        if (reference != null) {
+            keySet.addAll(reference.getTags().keySet());
         }
+        return keySet;
     }
 
+    /**
+     * Sets the latest {@code HistoryOsmPrimitive}.
+     * @param latest the latest {@code HistoryOsmPrimitive}
+     */
     protected void setLatest(HistoryOsmPrimitive latest) {
         if (latest == null) {
             if (this.current == this.latest) {
@@ -743,13 +594,13 @@ public class HistoryBrowserModel extends ChangeNotifier implements ActiveLayerCh
         if (history == null)
             return;
         OsmPrimitive primitive = event.getDataset().getPrimitiveById(history.getId(), history.getType());
-        HistoryOsmPrimitive latest;
+        HistoryOsmPrimitive newLatest;
         if (canShowAsLatest(primitive)) {
-            latest = new HistoryPrimitiveBuilder().build(primitive);
+            newLatest = new HistoryPrimitiveBuilder().build(primitive);
         } else {
-            latest = null;
+            newLatest = null;
         }
-        setLatest(latest);
+        setLatest(newLatest);
         fireModelChange();
     }
 
@@ -824,7 +675,7 @@ public class HistoryBrowserModel extends ChangeNotifier implements ActiveLayerCh
             return info == null ? User.getAnonymous() : User.createOsmUser(info.getId(), info.getDisplayName());
         }
 
-        public HistoryOsmPrimitive build(OsmPrimitive primitive) {
+        HistoryOsmPrimitive build(OsmPrimitive primitive) {
             primitive.accept(this);
             return clone;
         }
diff --git a/src/org/openstreetmap/josm/gui/history/TagInfoTransferHandler.java b/src/org/openstreetmap/josm/gui/history/TagInfoTransferHandler.java
index 26d135a..572632c 100644
--- a/src/org/openstreetmap/josm/gui/history/TagInfoTransferHandler.java
+++ b/src/org/openstreetmap/josm/gui/history/TagInfoTransferHandler.java
@@ -12,7 +12,6 @@ import org.openstreetmap.josm.data.osm.TagMap;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.datatransfer.TagTransferable;
 import org.openstreetmap.josm.gui.datatransfer.data.TagTransferData;
-import org.openstreetmap.josm.gui.history.HistoryBrowserModel.TagTableModel;
 
 /**
  * This transfer handler allows to select and copy tags from a table with the {@link TagTableColumnModel}.
diff --git a/src/org/openstreetmap/josm/gui/history/TagTableCellRenderer.java b/src/org/openstreetmap/josm/gui/history/TagTableCellRenderer.java
index 8eb243f..4f46486 100644
--- a/src/org/openstreetmap/josm/gui/history/TagTableCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/history/TagTableCellRenderer.java
@@ -32,8 +32,7 @@ public class TagTableCellRenderer extends JLabel implements TableCellRenderer {
         setOpaque(true);
     }
 
-    protected void setBackgroundReadable(String key, HistoryBrowserModel.TagTableModel model, boolean isSelected, boolean hasFocus,
-            boolean isValue) {
+    protected void setBackgroundReadable(String key, TagTableModel model, boolean isSelected, boolean hasFocus, boolean isValue) {
         Color bgColor = UIManager.getColor("Table.background");
         if ((!model.hasTag(key) && model.isCurrentPointInTime())
                 || (!model.oppositeHasTag(key) && model.isReferencePointInTime())) {
@@ -63,7 +62,7 @@ public class TagTableCellRenderer extends JLabel implements TableCellRenderer {
             return this;
 
         String key = (String) value;
-        HistoryBrowserModel.TagTableModel model = getTagTableModel(table);
+        TagTableModel model = getTagTableModel(table);
 
         String text = "";
         if (model.hasTag(key)) {
@@ -86,7 +85,7 @@ public class TagTableCellRenderer extends JLabel implements TableCellRenderer {
         return this;
     }
 
-    protected HistoryBrowserModel.TagTableModel getTagTableModel(JTable table) {
-        return (HistoryBrowserModel.TagTableModel) table.getModel();
+    protected TagTableModel getTagTableModel(JTable table) {
+        return (TagTableModel) table.getModel();
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/history/TagTableModel.java b/src/org/openstreetmap/josm/gui/history/TagTableModel.java
new file mode 100644
index 0000000..dd91506
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/history/TagTableModel.java
@@ -0,0 +1,146 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.history;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.swing.table.AbstractTableModel;
+
+import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
+
+/**
+ * The table model for the tags of the version
+ * at {@link PointInTimeType#REFERENCE_POINT_IN_TIME}
+ * or {@link PointInTimeType#CURRENT_POINT_IN_TIME}
+ * @since 11647 (extracted from HistoryBrowserModel)
+ */
+public final class TagTableModel extends AbstractTableModel {
+
+    private List<String> keys;
+    private final PointInTimeType pointInTimeType;
+    private final HistoryBrowserModel model;
+
+    /**
+     * Constructs a new {@code TagTableModel}.
+     * @param historyModel parent {@code HistoryBrowserModel}
+     * @param type type of point in time
+     */
+    public TagTableModel(HistoryBrowserModel historyModel, PointInTimeType type) {
+        model = historyModel;
+        pointInTimeType = type;
+        initKeyList();
+    }
+
+    void initKeyList() {
+        keys = new ArrayList<>(model.getKeySet());
+        Collections.sort(keys);
+        fireTableDataChanged();
+    }
+
+    @Override
+    public int getRowCount() {
+        if (keys == null)
+            return 0;
+        return keys.size();
+    }
+
+    @Override
+    public Object getValueAt(int row, int column) {
+        return getKeyAt(row);
+    }
+
+    /**
+     * Get the key for the given row.
+     * @param row The row
+     * @return The key in that row.
+     * @since 10637
+     */
+    public String getKeyAt(int row) {
+        return keys.get(row);
+    }
+
+    /**
+     * Determines if a tag exists for the given key.
+     * @param key tag key
+     * @return {@code true} if a tag exists for the given key
+     */
+    public boolean hasTag(String key) {
+        HistoryOsmPrimitive primitive = model.getPointInTime(pointInTimeType);
+        return primitive != null && primitive.hasKey(key);
+    }
+
+    /**
+     * Returns the tag value for the given key.
+     * @param key tag key
+     * @return tag value, or null
+     */
+    public String getValue(String key) {
+        HistoryOsmPrimitive primitive = model.getPointInTime(pointInTimeType);
+        if (primitive == null)
+            return null;
+        return primitive.get(key);
+    }
+
+    /**
+     * Determines if a tag exists in the opposite point in time for the given key.
+     * @param key tag key
+     * @return {@code true} if a tag exists for the given key
+     */
+    public boolean oppositeHasTag(String key) {
+        HistoryOsmPrimitive primitive = model.getPointInTime(pointInTimeType.opposite());
+        return primitive != null && primitive.hasKey(key);
+    }
+
+    /**
+     * Returns the tag value in the opposite point in time for the given key.
+     * @param key tag key
+     * @return tag value, or null
+     */
+    public String getOppositeValue(String key) {
+        HistoryOsmPrimitive primitive = model.getPointInTime(pointInTimeType.opposite());
+        if (primitive == null)
+            return null;
+        return primitive.get(key);
+    }
+
+    /**
+     * Determines if the tag value is the same in the opposite point in time for the given key.
+     * @param key tag key
+     * @return {@code true} if the tag value is the same in the opposite point in time for the given key
+     */
+    public boolean hasSameValueAsOpposite(String key) {
+        String value = getValue(key);
+        String oppositeValue = getOppositeValue(key);
+        return value != null && value.equals(oppositeValue);
+    }
+
+    /**
+     * Returns the type of point in time.
+     * @return the type of point in time
+     */
+    public PointInTimeType getPointInTimeType() {
+        return pointInTimeType;
+    }
+
+    /**
+     * Determines if this is the current point in time.
+     * @return {@code true} if this is the current point in time
+     */
+    public boolean isCurrentPointInTime() {
+        return pointInTimeType.equals(PointInTimeType.CURRENT_POINT_IN_TIME);
+    }
+
+    /**
+     * Determines if this is the reference point in time.
+     * @return {@code true} if this is the reference point in time
+     */
+    public boolean isReferencePointInTime() {
+        return pointInTimeType.equals(PointInTimeType.REFERENCE_POINT_IN_TIME);
+    }
+
+    @Override
+    public int getColumnCount() {
+        return 2;
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/history/TwoColumnDiff.java b/src/org/openstreetmap/josm/gui/history/TwoColumnDiff.java
index 56fab48..a235440 100644
--- a/src/org/openstreetmap/josm/gui/history/TwoColumnDiff.java
+++ b/src/org/openstreetmap/josm/gui/history/TwoColumnDiff.java
@@ -63,7 +63,7 @@ class TwoColumnDiff {
     private final Object[] current;
     boolean referenceReversed;
 
-    TwoColumnDiff(Object[] reference, Object ... current) {
+    TwoColumnDiff(Object[] reference, Object... current) {
         this.reference = Utils.copyArray(reference);
         this.current = Utils.copyArray(current);
         referenceDiff = new ArrayList<>();
diff --git a/src/org/openstreetmap/josm/gui/history/VersionTable.java b/src/org/openstreetmap/josm/gui/history/VersionTable.java
index 6a1473f..4540fb0 100644
--- a/src/org/openstreetmap/josm/gui/history/VersionTable.java
+++ b/src/org/openstreetmap/josm/gui/history/VersionTable.java
@@ -57,6 +57,9 @@ public class VersionTable extends JTable implements ChangeListener {
         this.model = model;
     }
 
+    /**
+     * Builds the table.
+     */
     protected void build() {
         getTableHeader().setFont(getTableHeader().getFont().deriveFont(9f));
         setRowSelectionAllowed(false);
@@ -107,10 +110,6 @@ public class VersionTable extends JTable implements ChangeListener {
         super.scrollRectToVisible(new Rectangle(0, aRect.y, aRect.width, aRect.height));
     }
 
-    protected HistoryBrowserModel.VersionTableModel getVersionTableModel() {
-        return (HistoryBrowserModel.VersionTableModel) getModel();
-    }
-
     @Override
     public void stateChanged(ChangeEvent e) {
         repaint();
@@ -128,18 +127,17 @@ public class VersionTable extends JTable implements ChangeListener {
                 int row = rowAtPoint(e.getPoint());
                 int col = columnAtPoint(e.getPoint());
                 if (row >= 0 && (col == VersionTableColumnModel.COL_DATE || col == VersionTableColumnModel.COL_USER)) {
-                    model.getVersionTableModel().setCurrentPointInTime(row);
-                    model.getVersionTableModel().setReferencePointInTime(Math.max(0, row - 1));
+                    model.setCurrentPointInTime(row);
+                    model.setReferencePointInTime(Math.max(0, row - 1));
                 }
             }
         }
 
         @Override
         protected int checkTableSelection(JTable table, Point p) {
-            HistoryBrowserModel.VersionTableModel tableModel = getVersionTableModel();
             int row = rowAtPoint(p);
-            if (row > -1 && !tableModel.isLatest(row)) {
-                popupMenu.prepare(tableModel.getPrimitive(row));
+            if (row > -1 && !model.isLatest(row)) {
+                popupMenu.prepare(model.getPrimitive(row));
             }
             return row;
         }
@@ -314,8 +312,7 @@ public class VersionTable extends JTable implements ChangeListener {
             setHorizontalAlignment(hAlignment);
         }
 
-        // for unit tests
-        private AlignedRenderer() {
+        AlignedRenderer() {
             this(SwingConstants.LEFT);
         }
 
diff --git a/src/org/openstreetmap/josm/gui/history/VersionTableModel.java b/src/org/openstreetmap/josm/gui/history/VersionTableModel.java
new file mode 100644
index 0000000..68f838e
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/history/VersionTableModel.java
@@ -0,0 +1,105 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.history;
+
+import java.text.DateFormat;
+
+import javax.swing.table.AbstractTableModel;
+
+import org.openstreetmap.josm.data.osm.Changeset;
+import org.openstreetmap.josm.data.osm.User;
+import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
+import org.openstreetmap.josm.tools.date.DateUtils;
+
+/**
+ * The table model for the list of versions in the current history
+ * @since 11646 (extracted from HistoryBrowserModel)
+ */
+public final class VersionTableModel extends AbstractTableModel {
+
+    private final HistoryBrowserModel model;
+
+    /**
+     * Constructs a new {@code VersionTableModel}.
+     * @param model parent {@code HistoryBrowserModel}
+     */
+    public VersionTableModel(HistoryBrowserModel model) {
+        this.model = model;
+    }
+
+    @Override
+    public int getRowCount() {
+        if (model.getHistory() == null)
+            return 0;
+        int ret = model.getHistory().getNumVersions();
+        if (model.getLatest() != null) {
+            ret++;
+        }
+        return ret;
+    }
+
+    @Override
+    public Object getValueAt(int row, int column) {
+        switch (column) {
+        case VersionTableColumnModel.COL_VERSION:
+            HistoryOsmPrimitive p1 = model.getPrimitive(row);
+            if (p1 != null)
+                return Long.toString(p1.getVersion());
+            return null;
+        case VersionTableColumnModel.COL_REFERENCE:
+            return model.isReferencePointInTime(row);
+        case VersionTableColumnModel.COL_CURRENT:
+            return model.isCurrentPointInTime(row);
+        case VersionTableColumnModel.COL_DATE:
+            HistoryOsmPrimitive p3 = model.getPrimitive(row);
+            if (p3 != null && p3.getTimestamp() != null)
+                return DateUtils.formatDateTime(p3.getTimestamp(), DateFormat.SHORT, DateFormat.SHORT);
+            return null;
+        case VersionTableColumnModel.COL_USER:
+            HistoryOsmPrimitive p4 = model.getPrimitive(row);
+            if (p4 != null) {
+                User user = p4.getUser();
+                if (user != null)
+                    return user.getName();
+            }
+            return null;
+        case VersionTableColumnModel.COL_EDITOR:
+            HistoryOsmPrimitive p5 = model.getPrimitive(row);
+            if (p5 != null) {
+                Changeset cs = p5.getChangeset();
+                if (cs != null) {
+                    return cs.get("created_by");
+                }
+            }
+            return null;
+        default:
+            return null;
+        }
+    }
+
+    @Override
+    public void setValueAt(Object aValue, int row, int column) {
+        if (!((Boolean) aValue))
+            return;
+        switch (column) {
+        case 1:
+            model.setReferencePointInTime(row);
+            break;
+        case 2:
+            model.setCurrentPointInTime(row);
+            break;
+        default:
+            return;
+        }
+        fireTableDataChanged();
+    }
+
+    @Override
+    public boolean isCellEditable(int row, int column) {
+        return column >= 1 && column <= 2;
+    }
+
+    @Override
+    public int getColumnCount() {
+        return 6;
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/io/SaveLayerTask.java b/src/org/openstreetmap/josm/gui/io/SaveLayerTask.java
index 7904081..831e51e 100644
--- a/src/org/openstreetmap/josm/gui/io/SaveLayerTask.java
+++ b/src/org/openstreetmap/josm/gui/io/SaveLayerTask.java
@@ -10,6 +10,7 @@ import org.openstreetmap.josm.actions.SaveAction;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
 
 /**
  * SaveLayerTask saves the data managed by an {@link org.openstreetmap.josm.gui.layer.AbstractModifiableLayer} to the
@@ -54,7 +55,7 @@ public class SaveLayerTask extends AbstractIOTask {
             if (!isCanceled()) {
                 layerInfo.getLayer().onPostSaveToFile();
             }
-        } catch (RuntimeException e) {
+        } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
             Main.error(e);
             setLastException(e);
         }
diff --git a/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java b/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java
index 5bbcf80..bb1bd8f 100644
--- a/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java
+++ b/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java
@@ -30,6 +30,7 @@ import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.ChangesetClosedException;
+import org.openstreetmap.josm.io.MessageNotifier;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.io.OsmApiPrimitiveGoneException;
 import org.openstreetmap.josm.io.OsmServerWriter;
@@ -234,6 +235,7 @@ public class UploadPrimitivesTask extends AbstractUploadTask {
     @Override
     protected void realRun() {
         try {
+            MessageNotifier.stop();
             uploadloop: while (true) {
                 try {
                     getProgressMonitor().subTask(
@@ -293,6 +295,10 @@ public class UploadPrimitivesTask extends AbstractUploadTask {
             } else {
                 lastException = e;
             }
+        } finally {
+            if (MessageNotifier.PROP_NOTIFIER_ENABLED.get()) {
+                MessageNotifier.start();
+            }
         }
         if (uploadCanceled && processedPrimitives.isEmpty()) return;
         cleanupAfterUpload();
diff --git a/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java b/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java
index 45000da..eb1a713 100644
--- a/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java
+++ b/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java
@@ -238,7 +238,7 @@ public class UploadSelectionDialog extends JDialog {
             return data.size();
         }
 
-        public List<OsmPrimitive> getPrimitives(int ... indices) {
+        public List<OsmPrimitive> getPrimitives(int... indices) {
             if (indices == null || indices.length == 0)
                 return Collections.emptyList();
             List<OsmPrimitive> ret = new ArrayList<>(indices.length);
diff --git a/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java b/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
index ceefa9f..5bda417 100644
--- a/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
@@ -1109,11 +1109,6 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
                 imgXoffset, imgYoffset,
                 imgXend, imgYend,
                 this);
-        if (PROP_FADE_AMOUNT.get() != 0) {
-            // dimm by painting opaque rect...
-            g.setColor(getFadeColorWithAlpha());
-            ((Graphics2D) g).fill(target);
-        }
     }
 
     private List<Tile> paintTileImages(Graphics g, TileSet ts) {
diff --git a/src/org/openstreetmap/josm/gui/layer/GpxLayer.java b/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
index ba6ce9c..a162d12 100644
--- a/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
@@ -88,7 +88,7 @@ public class GpxLayer extends Layer {
     public GpxLayer(GpxData d, String name, boolean isLocal) {
         super(d.getString(GpxConstants.META_NAME));
         data = d;
-        drawHelper = new GpxDrawHelper(data, getColorProperty());
+        drawHelper = new GpxDrawHelper(data);
         SystemOfMeasurement.addSoMChangeListener(drawHelper);
         ensureTrackVisibilityLength();
         setName(name);
diff --git a/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java b/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java
index ab50958..13168aa 100644
--- a/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java
@@ -1,11 +1,9 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.layer;
 
-import static org.openstreetmap.josm.tools.I18n.marktr;
 import static org.openstreetmap.josm.tools.I18n.tr;
 import static org.openstreetmap.josm.tools.I18n.trc;
 
-import java.awt.Color;
 import java.awt.Component;
 import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
@@ -30,7 +28,6 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.ProjectionBounds;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.OffsetBookmark;
-import org.openstreetmap.josm.data.preferences.ColorProperty;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.gui.MenuScroller;
 import org.openstreetmap.josm.gui.layer.imagery.ImageryFilterSettings;
@@ -43,21 +40,10 @@ import org.openstreetmap.josm.tools.Utils;
 
 public abstract class ImageryLayer extends Layer {
 
-    public static final ColorProperty PROP_FADE_COLOR = new ColorProperty(marktr("Imagery fade"), Color.white);
-    public static final IntegerProperty PROP_FADE_AMOUNT = new IntegerProperty("imagery.fade_amount", 0);
     public static final IntegerProperty PROP_SHARPEN_LEVEL = new IntegerProperty("imagery.sharpen_level", 0);
 
     private final List<ImageProcessor> imageProcessors = new ArrayList<>();
 
-    public static Color getFadeColor() {
-        return PROP_FADE_COLOR.get();
-    }
-
-    public static Color getFadeColorWithAlpha() {
-        Color c = PROP_FADE_COLOR.get();
-        return new Color(c.getRed(), c.getGreen(), c.getBlue(), PROP_FADE_AMOUNT.get()*255/100);
-    }
-
     protected final ImageryInfo info;
 
     protected Icon icon;
@@ -230,13 +216,14 @@ public abstract class ImageryLayer extends Layer {
 
     public JComponent getOffsetMenuItem(JComponent subMenu) {
         JMenuItem adjustMenuItem = new JMenuItem(getAdjustAction());
-        if (OffsetBookmark.allBookmarks.isEmpty()) return adjustMenuItem;
+        List<OffsetBookmark> allBookmarks = OffsetBookmark.getBookmarks();
+        if (allBookmarks.isEmpty()) return adjustMenuItem;
 
         subMenu.add(adjustMenuItem);
         subMenu.add(new JSeparator());
         boolean hasBookmarks = false;
         int menuItemHeight = 0;
-        for (OffsetBookmark b : OffsetBookmark.allBookmarks) {
+        for (OffsetBookmark b : allBookmarks) {
             if (!b.isUsable(this)) {
                 continue;
             }
diff --git a/src/org/openstreetmap/josm/gui/layer/LayerManager.java b/src/org/openstreetmap/josm/gui/layer/LayerManager.java
index 88a440b..8161d5f 100644
--- a/src/org/openstreetmap/josm/gui/layer/LayerManager.java
+++ b/src/org/openstreetmap/josm/gui/layer/LayerManager.java
@@ -13,6 +13,7 @@ import java.util.function.Consumer;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
 
@@ -69,6 +70,10 @@ public class LayerManager {
             this.source = source;
         }
 
+        /**
+         * Returns the {@code LayerManager} at the origin of this event.
+         * @return the {@code LayerManager} at the origin of this event
+         */
         public LayerManager getSource() {
             return source;
         }
@@ -80,10 +85,12 @@ public class LayerManager {
      */
     public static class LayerAddEvent extends LayerManagerEvent {
         private final Layer addedLayer;
+        private final boolean requiresZoom;
 
-        LayerAddEvent(LayerManager source, Layer addedLayer) {
+        LayerAddEvent(LayerManager source, Layer addedLayer, boolean requiresZoom) {
             super(source);
             this.addedLayer = addedLayer;
+            this.requiresZoom = requiresZoom;
         }
 
         /**
@@ -94,6 +101,15 @@ public class LayerManager {
             return addedLayer;
         }
 
+        /**
+         * Determines if an initial zoom is required.
+         * @return {@code true} if a zoom is required when this layer is added
+         * @since 11774
+         */
+        public final boolean isZoomRequired() {
+            return requiresZoom;
+        }
+
         @Override
         public String toString() {
             return "LayerAddEvent [addedLayer=" + addedLayer + ']';
@@ -180,16 +196,25 @@ public class LayerManager {
     private final List<LayerChangeListener> layerChangeListeners = new CopyOnWriteArrayList<>();
 
     /**
-     * Add a layer. The layer will be added at a given position.
+     * Add a layer. The layer will be added at a given position and the mapview zoomed at its projection bounds.
      * @param layer The layer to add
      */
     public void addLayer(final Layer layer) {
+        addLayer(layer, true);
+    }
+
+    /**
+     * Add a layer. The layer will be added at a given position.
+     * @param layer The layer to add
+     * @param initialZoom whether if the mapview must be zoomed at layer projection bounds
+     */
+    public void addLayer(final Layer layer, final boolean initialZoom) {
         // we force this on to the EDT Thread to make events fire from there.
         // The synchronization lock needs to be held by the EDT.
-        GuiHelper.runInEDTAndWaitWithException(() -> realAddLayer(layer));
+        GuiHelper.runInEDTAndWaitWithException(() -> realAddLayer(layer, initialZoom));
     }
 
-    protected synchronized void realAddLayer(Layer layer) {
+    protected synchronized void realAddLayer(Layer layer, boolean initialZoom) {
         if (containsLayer(layer)) {
             throw new IllegalArgumentException("Cannot add a layer twice: " + layer);
         }
@@ -197,7 +222,7 @@ public class LayerManager {
         int position = positionStrategy.getPosition(this);
         checkPosition(position);
         insertLayerAt(layer, position);
-        fireLayerAdded(layer);
+        fireLayerAdded(layer, initialZoom);
         if (Main.map != null) {
             layer.hookUpMapView(); // needs to be after fireLayerAdded
         }
@@ -364,7 +389,7 @@ public class LayerManager {
         layerChangeListeners.add(listener);
         if (fireAdd) {
             for (Layer l : getLayers()) {
-                listener.layerAdded(new LayerAddEvent(this, l));
+                listener.layerAdded(new LayerAddEvent(this, l, true));
             }
         }
     }
@@ -397,13 +422,13 @@ public class LayerManager {
         }
     }
 
-    private void fireLayerAdded(Layer layer) {
+    private void fireLayerAdded(Layer layer, boolean initialZoom) {
         GuiHelper.assertCallFromEdt();
-        LayerAddEvent e = new LayerAddEvent(this, layer);
+        LayerAddEvent e = new LayerAddEvent(this, layer, initialZoom);
         for (LayerChangeListener l : layerChangeListeners) {
             try {
                 l.layerAdded(e);
-            } catch (RuntimeException t) {
+            } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException t) {
                 throw BugReport.intercept(t).put("listener", l).put("event", e);
             }
         }
@@ -420,7 +445,7 @@ public class LayerManager {
         for (LayerChangeListener l : layerChangeListeners) {
             try {
                 l.layerRemoving(e);
-            } catch (RuntimeException t) {
+            } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException t) {
                 throw BugReport.intercept(t).put("listener", l).put("event", e).put("layer", layer);
             }
         }
@@ -433,7 +458,7 @@ public class LayerManager {
         for (LayerChangeListener l : layerChangeListeners) {
             try {
                 l.layerOrderChanged(e);
-            } catch (RuntimeException t) {
+            } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException t) {
                 throw BugReport.intercept(t).put("listener", l).put("event", e);
             }
         }
diff --git a/src/org/openstreetmap/josm/gui/layer/MainLayerManager.java b/src/org/openstreetmap/josm/gui/layer/MainLayerManager.java
index b34af7b..c037add 100644
--- a/src/org/openstreetmap/josm/gui/layer/MainLayerManager.java
+++ b/src/org/openstreetmap/josm/gui/layer/MainLayerManager.java
@@ -241,14 +241,14 @@ public class MainLayerManager extends LayerManager {
     }
 
     @Override
-    protected synchronized void realAddLayer(Layer layer) {
+    protected synchronized void realAddLayer(Layer layer, boolean initialZoom) {
         if (getLayers().isEmpty()) {
             LayerAvailabilityEvent e = new LayerAvailabilityEvent(this, true);
             for (LayerAvailabilityListener l : layerAvailabilityListeners) {
                 l.beforeFirstLayerAdded(e);
             }
         }
-        super.realAddLayer(layer);
+        super.realAddLayer(layer, initialZoom);
 
         // update the active layer automatically.
         if (layer instanceof OsmDataLayer || activeLayer == null) {
diff --git a/src/org/openstreetmap/josm/gui/layer/MapViewPaintable.java b/src/org/openstreetmap/josm/gui/layer/MapViewPaintable.java
index 0468ff1..0aea51d 100644
--- a/src/org/openstreetmap/josm/gui/layer/MapViewPaintable.java
+++ b/src/org/openstreetmap/josm/gui/layer/MapViewPaintable.java
@@ -71,7 +71,7 @@ public interface MapViewPaintable {
      * @author Michael Zangl
      * @since 10458
      */
-    public interface LayerPainter {
+    interface LayerPainter {
 
         /**
          * Paints the given layer.
diff --git a/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java b/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
index 3a2b88b..7c9d73c 100644
--- a/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
@@ -62,6 +62,7 @@ import org.openstreetmap.josm.data.gpx.ImmutableGpxTrack;
 import org.openstreetmap.josm.data.gpx.WayPoint;
 import org.openstreetmap.josm.data.osm.DataIntegrityProblemException;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.DataSet.UploadPolicy;
 import org.openstreetmap.josm.data.osm.DataSetMerger;
 import org.openstreetmap.josm.data.osm.DatasetConsistencyTest;
 import org.openstreetmap.josm.data.osm.IPrimitive;
@@ -386,7 +387,7 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
     @Override
     public Icon getIcon() {
         ImageProvider base = getBaseIconProvider().setMaxSize(ImageSizes.LAYER);
-        if (isUploadDiscouraged()) {
+        if (isUploadDiscouraged() || data.getUploadPolicy() == UploadPolicy.BLOCKED) {
             base.addOverlay(new ImageOverlay(new ImageProvider("warning-small"), 0.5, 0.5, 1.0, 1.0));
         }
         return base.get();
@@ -603,6 +604,9 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
         if (isUploadDiscouraged()) {
             p.add(new JLabel(tr("Upload is discouraged")), GBC.eop().insets(15, 0, 0, 0));
         }
+        if (data.getUploadPolicy() == UploadPolicy.BLOCKED) {
+            p.add(new JLabel(tr("Upload is blocked")), GBC.eop().insets(15, 0, 0, 0));
+        }
 
         return p;
     }
@@ -751,7 +755,7 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
         }
     }
 
-    private static void addIntegerIfPresent(WayPoint wpt, OsmPrimitive p, String gpxKey, String ... osmKeys) {
+    private static void addIntegerIfPresent(WayPoint wpt, OsmPrimitive p, String gpxKey, String... osmKeys) {
         List<String> possibleKeys = new ArrayList<>(Arrays.asList(osmKeys));
         possibleKeys.add(0, gpxKey);
         for (String key : possibleKeys) {
@@ -772,7 +776,7 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
         }
     }
 
-    private static void addDoubleIfPresent(WayPoint wpt, OsmPrimitive p, String gpxKey, String ... osmKeys) {
+    private static void addDoubleIfPresent(WayPoint wpt, OsmPrimitive p, String gpxKey, String... osmKeys) {
         List<String> possibleKeys = new ArrayList<>(Arrays.asList(osmKeys));
         possibleKeys.add(0, gpxKey);
         for (String key : possibleKeys) {
@@ -792,7 +796,7 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
         }
     }
 
-    private static void addStringIfPresent(WayPoint wpt, OsmPrimitive p, String gpxKey, String ... osmKeys) {
+    private static void addStringIfPresent(WayPoint wpt, OsmPrimitive p, String gpxKey, String... osmKeys) {
         List<String> possibleKeys = new ArrayList<>(Arrays.asList(osmKeys));
         possibleKeys.add(0, gpxKey);
         for (String key : possibleKeys) {
@@ -873,12 +877,12 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
 
     @Override
     public boolean isUploadable() {
-        return true;
+        return data.getUploadPolicy() != UploadPolicy.BLOCKED;
     }
 
     @Override
     public boolean requiresUploadToServer() {
-        return requiresUploadToServer;
+        return isUploadable() && requiresUploadToServer;
     }
 
     @Override
@@ -967,9 +971,14 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
          // change listener and already got notified.
     }
 
+    /**
+     * Determines if upload is being discouraged.
+     * (i.e. this dataset contains private data which should not be uploaded)
+     * @return {@code true} if upload is being discouraged, {@code false} otherwise
+     */
     @Override
     public final boolean isUploadDiscouraged() {
-        return data.isUploadDiscouraged();
+        return data.getUploadPolicy() == UploadPolicy.DISCOURAGED;
     }
 
     /**
@@ -978,8 +987,9 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
      * This feature allows to use "private" data layers.
      */
     public final void setUploadDiscouraged(boolean uploadDiscouraged) {
-        if (uploadDiscouraged ^ isUploadDiscouraged()) {
-            data.setUploadDiscouraged(uploadDiscouraged);
+        if (data.getUploadPolicy() != UploadPolicy.BLOCKED &&
+                (uploadDiscouraged ^ isUploadDiscouraged())) {
+            data.setUploadPolicy(uploadDiscouraged ? UploadPolicy.DISCOURAGED : UploadPolicy.NORMAL);
             for (LayerStateChangeListener l : layerStateChangeListeners) {
                 l.uploadDiscouragedChanged(this, uploadDiscouraged);
             }
@@ -1054,10 +1064,11 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
         String extension = PROPERTY_SAVE_EXTENSION.get();
         File file = getAssociatedFile();
         if (file == null && isRenamed()) {
-            String filename = Main.pref.get("lastDirectory") + '/' + getName();
-            if (!OsmImporter.FILE_FILTER.acceptName(filename))
-                filename = filename + '.' + extension;
-            file = new File(filename);
+            StringBuilder filename = new StringBuilder(Main.pref.get("lastDirectory")).append('/').append(getName());
+            if (!OsmImporter.FILE_FILTER.acceptName(filename.toString())) {
+                filename.append('.').append(extension);
+            }
+            file = new File(filename.toString());
         }
         return new FileChooserManager()
             .title(tr("Save OSM file"))
diff --git a/src/org/openstreetmap/josm/gui/layer/WMTSLayer.java b/src/org/openstreetmap/josm/gui/layer/WMTSLayer.java
index 5579eb7..cb4c52b 100644
--- a/src/org/openstreetmap/josm/gui/layer/WMTSLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/WMTSLayer.java
@@ -74,7 +74,8 @@ public class WMTSLayer extends AbstractCachedTileSourceLayer<WMTSTileSource> imp
         if (scaleList == null) {
             return getMaxZoomLvl();
         }
-        Scale snap = scaleList.getSnapScale(Main.map.mapView.getScale(), false);
+        double displayScale = Main.map.mapView.getScale() * Main.getProjection().getMetersPerUnit(); // meter per pixel
+        Scale snap = scaleList.getSnapScale(displayScale, false);
         return Math.max(
                 getMinZoomLvl(),
                 Math.min(
diff --git a/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java b/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
index 8bbc2b4..016c151 100644
--- a/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
+++ b/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
@@ -82,6 +82,7 @@ import org.openstreetmap.josm.io.JpgImporter;
 import org.openstreetmap.josm.tools.ExifReader;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.Pair;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.date.DateUtils;
@@ -270,7 +271,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
 
                 for (int i = gpxLst.size() - 1; i >= 0; i--) {
                     GpxDataWrapper wrapper = gpxLst.get(i);
-                    if (wrapper.file != null && sel.equals(wrapper.file)) {
+                    if (sel.equals(wrapper.file)) {
                         cbGpx.setSelectedIndex(i);
                         if (!sel.getName().equals(wrapper.name)) {
                             JOptionPane.showMessageDialog(
@@ -933,7 +934,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
                 sldMinutes.setValue((int) (timezoneOffsetPair.b.getSeconds() / 60));
                 final long deciSeconds = timezoneOffsetPair.b.getMilliseconds() / 100;
                 sldSeconds.setValue((int) (deciSeconds % 60));
-            } catch (RuntimeException e) {
+            } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
                 Main.warn(e);
                 JOptionPane.showMessageDialog(Main.parent,
                         tr("An error occurred while trying to match the photos to the GPX track."
diff --git a/src/org/openstreetmap/josm/gui/layer/geoimage/ImageEntry.java b/src/org/openstreetmap/josm/gui/layer/geoimage/ImageEntry.java
index 9927c46..a7bb22b 100644
--- a/src/org/openstreetmap/josm/gui/layer/geoimage/ImageEntry.java
+++ b/src/org/openstreetmap/josm/gui/layer/geoimage/ImageEntry.java
@@ -8,10 +8,10 @@ import java.util.Collections;
 import java.util.Date;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.data.SystemOfMeasurement;
 import org.openstreetmap.josm.data.coor.CachedLatLon;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.tools.ExifReader;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
 
 import com.drew.imaging.jpeg.JpegMetadataReader;
 import com.drew.lang.CompoundException;
@@ -431,33 +431,33 @@ public final class ImageEntry implements Comparable<ImageEntry>, Cloneable {
     public void extractExif() {
 
         Metadata metadata;
-        Directory dirExif;
-        GpsDirectory dirGps;
 
         if (file == null) {
             return;
         }
 
-        // Changed to silently cope with no time info in exif. One case
-        // of person having time that couldn't be parsed, but valid GPS info
-        try {
-            setExifTime(ExifReader.readTime(file));
-        } catch (RuntimeException ex) {
-            Main.warn(ex);
-            setExifTime(null);
-        }
-
         try {
             metadata = JpegMetadataReader.readMetadata(file);
-            dirExif = metadata.getFirstDirectoryOfType(ExifIFD0Directory.class);
-            dirGps = metadata.getFirstDirectoryOfType(GpsDirectory.class);
         } catch (CompoundException | IOException ex) {
-            Main.warn(ex);
+            Main.error(ex);
+            setExifTime(null);
             setExifCoor(null);
             setPos(null);
             return;
         }
 
+        // Changed to silently cope with no time info in exif. One case
+        // of person having time that couldn't be parsed, but valid GPS info
+        try {
+            setExifTime(ExifReader.readTime(metadata));
+        } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException ex) {
+            Main.warn(ex);
+            setExifTime(null);
+        }
+
+        final Directory dirExif = metadata.getFirstDirectoryOfType(ExifIFD0Directory.class);
+        final GpsDirectory dirGps = metadata.getFirstDirectoryOfType(GpsDirectory.class);
+
         try {
             if (dirExif != null) {
                 int orientation = dirExif.getInt(ExifIFD0Directory.TAG_ORIENTATION);
@@ -473,38 +473,20 @@ public final class ImageEntry implements Comparable<ImageEntry>, Cloneable {
             return;
         }
 
-        try {
-            double speed = dirGps.getDouble(GpsDirectory.TAG_SPEED);
-            String speedRef = dirGps.getString(GpsDirectory.TAG_SPEED_REF);
-            if ("M".equalsIgnoreCase(speedRef)) {
-                // miles per hour
-                speed *= SystemOfMeasurement.IMPERIAL.bValue / 1000;
-            } else if ("N".equalsIgnoreCase(speedRef)) {
-                // knots == nautical miles per hour
-                speed *= SystemOfMeasurement.NAUTICAL_MILE.bValue / 1000;
-            }
-            // default is K (km/h)
+        final Double speed = ExifReader.readSpeed(dirGps);
+        if (speed != null) {
             setSpeed(speed);
-        } catch (MetadataException ex) {
-            Main.debug(ex);
         }
 
-        try {
-            double ele = dirGps.getDouble(GpsDirectory.TAG_ALTITUDE);
-            int d = dirGps.getInt(GpsDirectory.TAG_ALTITUDE_REF);
-            if (d == 1) {
-                ele *= -1;
-            }
+        final Double ele = ExifReader.readElevation(dirGps);
+        if (ele != null) {
             setElevation(ele);
-        } catch (MetadataException ex) {
-            Main.debug(ex);
         }
 
         try {
-            LatLon latlon = ExifReader.readLatLon(dirGps);
+            final LatLon latlon = ExifReader.readLatLon(dirGps);
             setExifCoor(latlon);
             setPos(getExifCoor());
-
         } catch (MetadataException | IndexOutOfBoundsException ex) { // (other exceptions, e.g. #5271)
             Main.error("Error reading EXIF from file: " + ex);
             setExifCoor(null);
@@ -512,7 +494,7 @@ public final class ImageEntry implements Comparable<ImageEntry>, Cloneable {
         }
 
         try {
-            Double direction = ExifReader.readDirection(dirGps);
+            final Double direction = ExifReader.readDirection(dirGps);
             if (direction != null) {
                 setExifImgDir(direction);
             }
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java b/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java
index 1630219..1557e4b 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java
@@ -38,7 +38,6 @@ import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.gpx.GpxConstants;
 import org.openstreetmap.josm.data.gpx.GpxData;
 import org.openstreetmap.josm.data.gpx.WayPoint;
-import org.openstreetmap.josm.data.preferences.AbstractProperty;
 import org.openstreetmap.josm.data.preferences.ColorProperty;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.MapViewState;
@@ -205,10 +204,9 @@ public class GpxDrawHelper implements SoMChangeListener {
     /**
      * Constructs a new {@code GpxDrawHelper}.
      * @param gpxData GPX data
-     * @param abstractProperty The color to draw with
-     * @since 10824
+     * @since 11713
      */
-    public GpxDrawHelper(GpxData gpxData, AbstractProperty<Color> abstractProperty) {
+    public GpxDrawHelper(GpxData gpxData) {
         data = gpxData;
         setupColors();
     }
@@ -293,7 +291,7 @@ public class GpxDrawHelper implements SoMChangeListener {
         heatMapDrawLowerLimit = Main.pref.getInteger("draw.rawgps.heatmap.lower-limit", spec, 0);
 
         // shrink to range
-        heatMapDrawGain = Math.min(Math.max(-10, heatMapDrawGain), 10);
+        heatMapDrawGain = Utils.clamp(heatMapDrawGain, -10, 10);
 
         neutralColor = getColor(layerName, true);
         velocityScale.setNoDataColor(neutralColor);
@@ -731,7 +729,7 @@ public class GpxDrawHelper implements SoMChangeListener {
         // 2nd. determine current scale factors -------------------------------
 
         // adjust global settings
-        final int globalLineWidth = Math.min(Math.max(lineWidth, 1), 20);
+        final int globalLineWidth = Utils.clamp(lineWidth, 1, 20);
 
         // cache scale of view
         final double zoomScale = mv.getDist100Pixel() / 50.0f;
@@ -739,7 +737,7 @@ public class GpxDrawHelper implements SoMChangeListener {
         // 3rd. determine current paint parameters -----------------------------
 
         // alpha value is based on zoom and line with combined with global layer alpha
-        float theLineAlpha = Math.min(Math.max((0.50f/(float) zoomScale)/(globalLineWidth + 1), 0.01f), 0.50f) * layerAlpha;
+        float theLineAlpha = (float) Utils.clamp((0.50 / zoomScale) / (globalLineWidth + 1), 0.01, 0.50) * layerAlpha;
         final int theLineWith = (int) (lineWidth / zoomScale) + 1;
 
         // 4th setup virtual paint area ----------------------------------------
@@ -1156,7 +1154,7 @@ public class GpxDrawHelper implements SoMChangeListener {
         final double zoomScale = mv.getDist100Pixel() / 50.0f;
 
         // adjust global settings ( zero = default line width )
-        final int globalLineWidth = (0 == lineWidth) ? 1 : Math.min(Math.max(lineWidth, 1), 20);
+        final int globalLineWidth = (0 == lineWidth) ? 1 : Utils.clamp(lineWidth, 1, 20);
 
         // 1st setup virtual paint area ----------------------------------------
 
@@ -1191,15 +1189,15 @@ public class GpxDrawHelper implements SoMChangeListener {
         int lineWidthF = lineWidthB > 2 ? (globalLineWidth - 1) : 0;
 
         // global alpha adjustment
-        float lineAlpha = Math.min(Math.max((0.40f/(float) zoomScale)/(globalLineWidth+1), 0.01f), 0.40f);
+        float lineAlpha = (float) Utils.clamp((0.40 / zoomScale) / (globalLineWidth + 1), 0.01, 0.40);
 
         // adjust 0.15 .. 1.85
         float scaleAlpha = 1.0f + ((heatMapDrawGain/10.0f) * 0.85f);
 
         // add to calculated values
-        float lineAlphaBPoint = Math.max(Math.min(((lineAlpha * 0.65f) * scaleAlpha), 0.90f), 0.001f);
-        float lineAlphaBLine = Math.max(Math.min(((lineAlpha * 1.00f) * scaleAlpha), 0.90f), 0.001f);
-        float lineAlphaFLine = Math.max(Math.min(((lineAlpha / 1.50f) * scaleAlpha), 0.90f), 0.001f);
+        float lineAlphaBPoint = (float) Utils.clamp((lineAlpha * 0.65) * scaleAlpha, 0.001, 0.90);
+        float lineAlphaBLine = (float) Utils.clamp((lineAlpha * 1.00) * scaleAlpha, 0.001, 0.90);
+        float lineAlphaFLine = (float) Utils.clamp((lineAlpha / 1.50) * scaleAlpha, 0.001, 0.90);
 
         // 3rd Calculate the heat map data by draw GPX traces with alpha value ----------
 
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java b/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java
index d656229..b799bc9 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java
@@ -40,7 +40,7 @@ public class ImportImagesAction extends AbstractAction {
                 JOptionPane.WARNING_MESSAGE, ht("/Action/ImportImages#CantImportIntoGpxLayerFromServer"));
     }
 
-    private static void addRecursiveFiles(List<File> files, File ... sel) {
+    private static void addRecursiveFiles(List<File> files, File... sel) {
         if (sel == null) { // listFiles might return null
             return;
         }
diff --git a/src/org/openstreetmap/josm/gui/layer/imagery/TileSourceDisplaySettings.java b/src/org/openstreetmap/josm/gui/layer/imagery/TileSourceDisplaySettings.java
index 67ab88a..435840c 100644
--- a/src/org/openstreetmap/josm/gui/layer/imagery/TileSourceDisplaySettings.java
+++ b/src/org/openstreetmap/josm/gui/layer/imagery/TileSourceDisplaySettings.java
@@ -10,6 +10,7 @@ import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
 
 /**
@@ -274,7 +275,7 @@ public class TileSourceDisplaySettings {
             if (dx != null && dy != null) {
                 setDisplacement(new EastNorth(Double.parseDouble(dx), Double.parseDouble(dy)));
             }
-        } catch (RuntimeException e) {
+        } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
             throw BugReport.intercept(e).put("data", data);
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/layer/markerlayer/AudioMarker.java b/src/org/openstreetmap/josm/gui/layer/markerlayer/AudioMarker.java
index 5b56916..d7536b2 100644
--- a/src/org/openstreetmap/josm/gui/layer/markerlayer/AudioMarker.java
+++ b/src/org/openstreetmap/josm/gui/layer/markerlayer/AudioMarker.java
@@ -2,6 +2,7 @@
 package org.openstreetmap.josm.gui.layer.markerlayer;
 
 import java.awt.event.ActionEvent;
+import java.io.IOException;
 import java.net.URL;
 import java.util.Collections;
 
@@ -57,7 +58,7 @@ public class AudioMarker extends ButtonMarker {
 
             AudioPlayer.play(audioUrl, offset + syncOffset + after);
             recentlyPlayedMarker = this;
-        } catch (Exception e) {
+        } catch (IOException | InterruptedException e) {
             AudioPlayer.audioMalfunction(e);
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java b/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java
index 3bb5577..d0620f4 100644
--- a/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java
+++ b/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java
@@ -8,6 +8,7 @@ import java.awt.Point;
 import java.awt.Rectangle;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
+import java.io.IOException;
 
 import javax.swing.JOptionPane;
 import javax.swing.Timer;
@@ -97,7 +98,7 @@ public final class PlayHeadMarker extends Marker {
         if (wasPlaying) {
             try {
                 AudioPlayer.pause();
-            } catch (Exception ex) {
+            } catch (IOException | InterruptedException ex) {
                 AudioPlayer.audioMalfunction(ex);
             }
         }
@@ -111,7 +112,7 @@ public final class PlayHeadMarker extends Marker {
         if (!wasPlaying || reset) {
             try {
                 AudioPlayer.pause();
-            } catch (Exception ex) {
+            } catch (IOException | InterruptedException ex) {
                 AudioPlayer.audioMalfunction(ex);
             }
         }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java b/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java
index d46e45c..0f4a469 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java
@@ -23,12 +23,13 @@ import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.gui.mappaint.DividedScale.RangeViolatedError;
 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
 import org.openstreetmap.josm.gui.mappaint.styleelement.AreaElement;
+import org.openstreetmap.josm.gui.mappaint.styleelement.AreaIconElement;
 import org.openstreetmap.josm.gui.mappaint.styleelement.BoxTextElement;
 import org.openstreetmap.josm.gui.mappaint.styleelement.LineElement;
-import org.openstreetmap.josm.gui.mappaint.styleelement.LineTextElement;
 import org.openstreetmap.josm.gui.mappaint.styleelement.NodeElement;
 import org.openstreetmap.josm.gui.mappaint.styleelement.RepeatImageElement;
 import org.openstreetmap.josm.gui.mappaint.styleelement.StyleElement;
+import org.openstreetmap.josm.gui.mappaint.styleelement.TextElement;
 import org.openstreetmap.josm.gui.mappaint.styleelement.TextLabel;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.Pair;
@@ -86,6 +87,10 @@ public class ElemStyles implements PreferenceChangedListener {
         });
     }
 
+    /**
+     * Returns the list of style sources.
+     * @return the list of style sources
+     */
     public List<StyleSource> getStyleSources() {
         return Collections.<StyleSource>unmodifiableList(styleSources);
     }
@@ -216,7 +221,7 @@ public class ElemStyles implements PreferenceChangedListener {
                 if (!drawMultipolygon || !r.isMultipolygon() || !r.isUsable()) {
                     continue;
                 }
-                Multipolygon multipolygon = MultipolygonCache.getInstance().get(nc, r);
+                Multipolygon multipolygon = MultipolygonCache.getInstance().get(r);
 
                 if (multipolygon.getOuterWays().contains(osm)) {
                     boolean hasIndependentLineStyle = false;
@@ -284,7 +289,7 @@ public class ElemStyles implements PreferenceChangedListener {
                 if (!drawMultipolygon || !ref.isMultipolygon() || !ref.isUsable()) {
                     continue;
                 }
-                final Multipolygon multipolygon = MultipolygonCache.getInstance().get(nc, ref);
+                final Multipolygon multipolygon = MultipolygonCache.getInstance().get(ref);
 
                 if (multipolygon.getInnerWays().contains(osm)) {
                     p = generateStyles(osm, scale, false);
@@ -318,7 +323,7 @@ public class ElemStyles implements PreferenceChangedListener {
             if (drawMultipolygon && ((Relation) osm).isMultipolygon()
                     && !Utils.exists(p.a, AreaElement.class) && Main.pref.getBoolean("multipolygon.deprecated.outerstyle", true)) {
                 // look at outer ways to find area style
-                Multipolygon multipolygon = MultipolygonCache.getInstance().get(nc, (Relation) osm);
+                Multipolygon multipolygon = MultipolygonCache.getInstance().get((Relation) osm);
                 for (Way w : multipolygon.getOuterWays()) {
                     Pair<StyleElementList, Range> wayStyles = generateStyles(w, scale, false);
                     p.b = Range.cut(p.b, wayStyles.b);
@@ -365,13 +370,19 @@ public class ElemStyles implements PreferenceChangedListener {
             }
             env.layer = e.getKey();
             if (osm instanceof Way) {
-                addIfNotNull(sl, AreaElement.create(env));
+                AreaElement areaStyle = AreaElement.create(env);
+                addIfNotNull(sl, areaStyle);
                 addIfNotNull(sl, RepeatImageElement.create(env));
                 addIfNotNull(sl, LineElement.createLine(env));
                 addIfNotNull(sl, LineElement.createLeftCasing(env));
                 addIfNotNull(sl, LineElement.createRightCasing(env));
                 addIfNotNull(sl, LineElement.createCasing(env));
-                addIfNotNull(sl, LineTextElement.create(env));
+                addIfNotNull(sl, AreaIconElement.create(env));
+                addIfNotNull(sl, TextElement.create(env));
+                if (areaStyle != null) {
+                    //TODO: Warn about this, or even remove it completely
+                    addIfNotNull(sl, TextElement.createForContent(env));
+                }
             } else if (osm instanceof Node) {
                 NodeElement nodeStyle = NodeElement.create(env);
                 if (nodeStyle != null) {
@@ -382,11 +393,17 @@ public class ElemStyles implements PreferenceChangedListener {
                 }
             } else if (osm instanceof Relation) {
                 if (((Relation) osm).isMultipolygon()) {
-                    addIfNotNull(sl, AreaElement.create(env));
+                    AreaElement areaStyle = AreaElement.create(env);
+                    addIfNotNull(sl, areaStyle);
                     addIfNotNull(sl, RepeatImageElement.create(env));
                     addIfNotNull(sl, LineElement.createLine(env));
                     addIfNotNull(sl, LineElement.createCasing(env));
-                    addIfNotNull(sl, LineTextElement.create(env));
+                    addIfNotNull(sl, AreaIconElement.create(env));
+                    addIfNotNull(sl, TextElement.create(env));
+                    if (areaStyle != null) {
+                        //TODO: Warn about this, or even remove it completely
+                        addIfNotNull(sl, TextElement.createForContent(env));
+                    }
                 } else if (osm.hasTag("type", "restriction")) {
                     addIfNotNull(sl, NodeElement.create(env));
                 }
@@ -520,7 +537,7 @@ public class ElemStyles implements PreferenceChangedListener {
      * @return {@code true} if primitive has only an AreaElement
      * @since 7486
      */
-    public static boolean hasOnlyAreaElemStyle(OsmPrimitive p) {
+    public static boolean hasOnlyAreaOrTextStyleElements(OsmPrimitive p) {
         MapCSSStyleSource.STYLE_SOURCE_LOCK.readLock().lock();
         try {
             if (MapPaintStyles.getStyles() == null)
@@ -530,7 +547,7 @@ public class ElemStyles implements PreferenceChangedListener {
                 return false;
             }
             for (StyleElement s : styles) {
-                if (!(s instanceof AreaElement)) {
+                if (!(s instanceof AreaElement || s instanceof TextElement)) {
                     return false;
                 }
             }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java b/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java
index 448e951..08be6b1 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java
@@ -253,6 +253,9 @@ public final class MapPaintStyles {
         return dirs;
     }
 
+    /**
+     * Reloads all styles from the preferences.
+     */
     public static void readFromPreferences() {
         styles.clear();
 
diff --git a/src/org/openstreetmap/josm/gui/mappaint/StyleCache.java b/src/org/openstreetmap/josm/gui/mappaint/StyleCache.java
index d59b219..29873b5 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/StyleCache.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/StyleCache.java
@@ -48,6 +48,12 @@ public final class StyleCache {
         return s.intern();
     }
 
+    /**
+     * Get the style for a specific style. Returns the range as well.
+     * @param scale The current scale
+     * @param selected true to get the state for a selected element,
+     * @return The style and the range it is valid for.
+     */
     public Pair<StyleElementList, Range> getWithRange(double scale, boolean selected) {
         int idx = getIndex(selected);
         if (states[idx] == null) {
@@ -87,6 +93,14 @@ public final class StyleCache {
     }
 
     /**
+     * Clears the style cache. This should only be used for testing.
+     * It may be removed some day and replaced by a WeakReference implementation that automatically forgets old entries.
+     */
+    static void clearStyleCachePool() {
+        internPool.clear();
+    }
+
+    /**
      * Get the size of the intern pool. Only for tests!
      * @return size of the intern pool
      */
diff --git a/src/org/openstreetmap/josm/gui/mappaint/StyleKeys.java b/src/org/openstreetmap/josm/gui/mappaint/StyleKeys.java
index 8fca67b..5cb5065 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/StyleKeys.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/StyleKeys.java
@@ -24,6 +24,10 @@ public interface StyleKeys {
     String ICON_OPACITY = "icon-opacity";
     String ICON_ROTATION = "icon-rotation";
     String ICON_WIDTH = "icon-width";
+    /**
+     * Position of icons on area.
+     */
+    String ICON_POSITION = "icon-position";
     String LINECAP = "linecap";
     String LINEJOIN = "linejoin";
     String MAJOR_Z_INDEX = "major-z-index";
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java
index c383bc7..f0eab71 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java
@@ -39,7 +39,7 @@ public interface Condition {
      * @since 10674
      */
     @FunctionalInterface
-    public interface ToTagConvertable {
+    interface ToTagConvertable {
         /**
          * Converts the current condition to a tag
          * @param primitive A primitive to use as context. May be ignored.
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/ConditionFactory.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/ConditionFactory.java
index 3eb4730..69c2c86 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/ConditionFactory.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/ConditionFactory.java
@@ -15,7 +15,6 @@ import java.util.function.Predicate;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.search.SearchCompiler.InDataSourceArea;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -740,7 +739,7 @@ public final class ConditionFactory {
         static boolean unclosed_multipolygon(Environment e) { // NO_UCD (unused code)
             return e.osm instanceof Relation && ((Relation) e.osm).isMultipolygon() &&
                     !e.osm.isIncomplete() && !((Relation) e.osm).hasIncompleteMembers() &&
-                    !MultipolygonCache.getInstance().get(Main.map.mapView, (Relation) e.osm).getOpenEnds().isEmpty();
+                    !MultipolygonCache.getInstance().get((Relation) e.osm).getOpenEnds().isEmpty();
         }
 
         private static final Predicate<OsmPrimitive> IN_DOWNLOADED_AREA = new InDataSourceArea(false);
@@ -767,7 +766,7 @@ public final class ConditionFactory {
             if (e.osm instanceof Way && ((Way) e.osm).isClosed())
                 return true;
             if (e.osm instanceof Relation && ((Relation) e.osm).isMultipolygon())
-                return MultipolygonCache.getInstance().get(Main.map.mapView, (Relation) e.osm).getOpenEnds().isEmpty();
+                return MultipolygonCache.getInstance().get((Relation) e.osm).getOpenEnds().isEmpty();
             return false;
         }
 
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java
index 1d19f12..25e36af 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java
@@ -57,7 +57,7 @@ public final class ExpressionFactory {
      */
     @Target(ElementType.METHOD)
     @Retention(RetentionPolicy.RUNTIME)
-    static @interface NullableArguments {}
+    @interface NullableArguments {}
 
     private static final List<Method> arrayFunctions = new ArrayList<>();
     private static final List<Method> parameterFunctions = new ArrayList<>();
@@ -831,6 +831,56 @@ public final class ExpressionFactory {
         }
 
         /**
+         * Converts string {@code s} to uppercase.
+         * @param s The source string
+         * @return The resulting string
+         * @see String#toUpperCase(Locale)
+         * @since 11756
+         */
+        public static String upper(String s) {
+            return s == null ? null : s.toUpperCase(Locale.ENGLISH);
+        }
+
+        /**
+         * Converts string {@code s} to lowercase.
+         * @param s The source string
+         * @return The resulting string
+         * @see String#toLowerCase(Locale)
+         * @since 11756
+         */
+        public static String lower(String s) {
+            return s == null ? null : s.toLowerCase(Locale.ENGLISH);
+        }
+
+        /**
+         * Trim whitespaces from the string {@code s}.
+         * @param s The source string
+         * @return The resulting string
+         * @see Utils#strip
+         * @since 11756
+         */
+        public static String trim(String s) {
+            return Utils.strip(s);
+        }
+
+        /**
+         * Percent-decode a string. (See https://en.wikipedia.org/wiki/Percent-encoding)
+         * This is especially useful for wikipedia titles
+         * @param s url-encoded string
+         * @return the decoded string, or original in case of an error
+         * @since 11756
+         */
+        public static String URL_decode(String s) {
+            if (s == null) return null;
+            try {
+                return Utils.decodeUrl(s);
+            } catch (IllegalStateException e) {
+                Main.debug(e);
+                return s;
+            }
+        }
+
+        /**
          * Percent-encode a string. (See https://en.wikipedia.org/wiki/Percent-encoding)
          * This is especially useful for data urls, e.g.
          * <code>concat("data:image/svg+xml,", URL_encode("<svg>...</svg>"));</code>
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj b/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj
index 0411770..a2349b4 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj
@@ -66,7 +66,7 @@ public class MapCSSParser {
     /**
      * Nicer way to refer to a lexical state.
      */
-    public static enum LexicalState {
+    public enum LexicalState {
         /** the preprocessor */
         PREPROCESSOR(0),
         /** the main parser */
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java
index 7650268..3fe005b 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java
@@ -244,7 +244,7 @@ public interface Selector {
                 @Override
                 public void visit(Relation r) {
                     if (left.matches(e.withPrimitive(r))) {
-                        final List<Node> openEnds = MultipolygonCache.getInstance().get(Main.map.mapView, r).getOpenEnds();
+                        final List<Node> openEnds = MultipolygonCache.getInstance().get(r).getOpenEnds();
                         final int openEndIndex = openEnds.indexOf(e.osm);
                         if (openEndIndex >= 0) {
                             e.parent = r;
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/AreaElement.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/AreaElement.java
index c30bddd..079c433 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/styleelement/AreaElement.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/AreaElement.java
@@ -9,11 +9,10 @@ import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.visitor.paint.MapPaintSettings;
-import org.openstreetmap.josm.data.osm.visitor.paint.PaintColors;
 import org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer;
+import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.gui.mappaint.Cascade;
 import org.openstreetmap.josm.gui.mappaint.Environment;
-import org.openstreetmap.josm.gui.mappaint.Keyword;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles.IconReference;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.Utils;
@@ -24,8 +23,15 @@ import org.openstreetmap.josm.tools.Utils;
 public class AreaElement extends StyleElement {
 
     /**
+     * The default opacity for the fill. For historical reasons in range 0.255.
+     */
+    private static final IntegerProperty DEFAULT_FILL_ALPHA = new IntegerProperty("mappaint.fillalpha", 50);
+
+    /**
      * If fillImage == null, color is the fill-color, otherwise
-     * an arbitrary color value sampled from the fillImage
+     * an arbitrary color value sampled from the fillImage.
+     *
+     * The color may be fully transparent to indicate that the area should not be filled.
      */
     public Color color;
 
@@ -36,7 +42,9 @@ public class AreaElement extends StyleElement {
 
     /**
      * The text that should be written on this area.
+     * @deprecated Use {@link TextElement} instead.
      */
+    @Deprecated
     public TextLabel text;
 
     /**
@@ -55,14 +63,13 @@ public class AreaElement extends StyleElement {
      */
     public Float extentThreshold;
 
-    protected AreaElement(Cascade c, Color color, MapImage fillImage, Float extent, Float extentThreshold, TextLabel text) {
+    protected AreaElement(Cascade c, Color color, MapImage fillImage, Float extent, Float extentThreshold) {
         super(c, 1f);
         CheckParameterUtil.ensureParameterNotNull(color);
         this.color = color;
         this.fillImage = fillImage;
         this.extent = extent;
         this.extentThreshold = extentThreshold;
-        this.text = text;
     }
 
     /**
@@ -83,7 +90,7 @@ public class AreaElement extends StyleElement {
                     fillImage.getWidth() / 2, fillImage.getHeight() / 2)
             );
 
-            fillImage.alpha = Math.min(255, Math.max(0, Main.pref.getInteger("mappaint.fill-image-alpha", 255)));
+            fillImage.alpha = Utils.clamp(Main.pref.getInteger("mappaint.fill-image-alpha", 255), 0, 255);
             Integer pAlpha = Utils.colorFloat2int(c.get(FILL_OPACITY, null, float.class));
             if (pAlpha != null) {
                 fillImage.alpha = pAlpha;
@@ -91,36 +98,20 @@ public class AreaElement extends StyleElement {
         } else {
             color = c.get(FILL_COLOR, null, Color.class);
             if (color != null) {
-                int alpha = color.getAlpha();
-                if (alpha == 255) {
-                    // Assume alpha value has not been specified by the user if
-                    // is set to fully opaque. Use default value in this case.
-                    // It is not an ideal solution, but a little tricky to get this
-                    // right, especially as named map colors can be changed in
-                    // the preference GUI and written to the preferences file.
-                    alpha = Math.min(255, Math.max(0, Main.pref.getInteger("mappaint.fillalpha", 50)));
-                }
-                Integer pAlpha = Utils.colorFloat2int(c.get(FILL_OPACITY, null, float.class));
-                if (pAlpha != null) {
-                    alpha = pAlpha;
-                }
-                color = new Color(color.getRed(), color.getGreen(), color.getBlue(), alpha);
+                float defaultOpacity = Utils.colorInt2float(DEFAULT_FILL_ALPHA.get());
+                float opacity = c.get(FILL_OPACITY, defaultOpacity, Float.class);
+                color = Utils.alphaMultiply(color, opacity);
             }
         }
 
-        TextLabel text = null;
-        Keyword textPos = c.get(TEXT_POSITION, null, Keyword.class);
-        if (textPos == null || "center".equals(textPos.val)) {
-            text = TextLabel.create(env, PaintColors.AREA_TEXT.get(), true);
-        }
-
-        Float extent = c.get(FILL_EXTENT, null, float.class);
-        Float extentThreshold = c.get(FILL_EXTENT_THRESHOLD, null, float.class);
+        if (color != null) {
+            Float extent = c.get(FILL_EXTENT, null, float.class);
+            Float extentThreshold = c.get(FILL_EXTENT_THRESHOLD, null, float.class);
 
-        if (color != null)
-            return new AreaElement(c, color, fillImage, extent, extentThreshold, text);
-        else
+            return new AreaElement(c, color, fillImage, extent, extentThreshold);
+        } else {
             return null;
+        }
     }
 
     @Override
@@ -152,19 +143,18 @@ public class AreaElement extends StyleElement {
         AreaElement that = (AreaElement) obj;
         return Objects.equals(color, that.color) &&
                 Objects.equals(fillImage, that.fillImage) &&
-                Objects.equals(text, that.text) &&
                 Objects.equals(extent, that.extent) &&
                 Objects.equals(extentThreshold, that.extentThreshold);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(super.hashCode(), color, fillImage, text, extent, extentThreshold);
+        return Objects.hash(super.hashCode(), color, fillImage, extent, extentThreshold);
     }
 
     @Override
     public String toString() {
         return "AreaElemStyle{" + super.toString() + "color=" + Utils.toString(color) +
-                " fillImage=[" + fillImage + "]}";
+                " fillImage=[" + fillImage + "] extent=[" + extent + "] extentThreshold=[" + extentThreshold + "]}";
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/AreaIconElement.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/AreaIconElement.java
new file mode 100644
index 0000000..4dd93ff
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/AreaIconElement.java
@@ -0,0 +1,103 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.mappaint.styleelement;
+
+import java.util.Objects;
+
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.visitor.paint.MapPaintSettings;
+import org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer;
+import org.openstreetmap.josm.gui.mappaint.Cascade;
+import org.openstreetmap.josm.gui.mappaint.Environment;
+import org.openstreetmap.josm.gui.mappaint.Keyword;
+import org.openstreetmap.josm.gui.mappaint.styleelement.placement.PartiallyInsideAreaStrategy;
+import org.openstreetmap.josm.gui.mappaint.styleelement.placement.PositionForAreaStrategy;
+import org.openstreetmap.josm.gui.util.RotationAngle;
+
+/**
+ * This class defines how an icon is rendered onto the area.
+ * @author Michael Zangl
+ * @since 11730
+ */
+public class AreaIconElement extends StyleElement {
+    /**
+     * The icon that is displayed on the center of the area.
+     */
+    private final MapImage iconImage;
+
+    /**
+     * The rotation of the {@link #iconImageAngle}
+     */
+    private final RotationAngle iconImageAngle;
+
+    /**
+     * The position of the icon inside the area.
+     */
+    private final PositionForAreaStrategy iconPosition;
+
+    protected AreaIconElement(Cascade c, MapImage iconImage, RotationAngle iconImageAngle, PositionForAreaStrategy iconPosition) {
+        super(c, 4.8f);
+        this.iconImage = Objects.requireNonNull(iconImage, "iconImage");
+        this.iconImageAngle = Objects.requireNonNull(iconImageAngle, "iconImageAngle");
+        this.iconPosition = Objects.requireNonNull(iconPosition, "iconPosition");
+    }
+
+    @Override
+    public void paintPrimitive(OsmPrimitive osm, MapPaintSettings paintSettings, StyledMapRenderer painter,
+            boolean selected, boolean outermember, boolean member) {
+        if (painter.isShowIcons()) {
+            painter.drawAreaIcon(osm, iconImage, painter.isInactiveMode() || osm.isDisabled(), selected, member,
+                    iconImageAngle.getRotationAngle(osm), iconPosition);
+        }
+    }
+
+    /**
+     * Create a new {@link AreaIconElement}
+     * @param env The current style definitions
+     * @return The area element or <code>null</code> if there is no icon.
+     */
+    public static AreaIconElement create(final Environment env) {
+        final Cascade c = env.mc.getCascade(env.layer);
+        MapImage iconImage = NodeElement.createIcon(env);
+        if (iconImage != null) {
+            RotationAngle rotationAngle = NodeElement.createRotationAngle(env);
+            Keyword positionKeyword = c.get(AreaElement.ICON_POSITION, null, Keyword.class);
+            PositionForAreaStrategy position = PositionForAreaStrategy.forKeyword(positionKeyword, PartiallyInsideAreaStrategy.INSTANCE);
+
+            return new AreaIconElement(c, iconImage, rotationAngle, position);
+        } else {
+            return null;
+        }
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = super.hashCode();
+        result = prime * result + ((iconImage == null) ? 0 : iconImage.hashCode());
+        result = prime * result + ((iconImageAngle == null) ? 0 : iconImageAngle.hashCode());
+        result = prime * result + ((iconPosition == null) ? 0 : iconPosition.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (!super.equals(obj)) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        AreaIconElement other = (AreaIconElement) obj;
+        return Objects.equals(iconImage, other.iconImage) &&
+                Objects.equals(iconImageAngle, other.iconImageAngle) &&
+                Objects.equals(iconPosition, other.iconPosition);
+    }
+
+    @Override
+    public String toString() {
+        return "AreaIconElement{" + super.toString() + "iconImage=[" + iconImage + "] iconImageAngle=[" + iconImageAngle + "]}";
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/BoxTextElement.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/BoxTextElement.java
index 043887c..8fc37d9 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/styleelement/BoxTextElement.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/BoxTextElement.java
@@ -107,11 +107,6 @@ public class BoxTextElement extends StyleElement {
     }
 
     /**
-     * A rectangle with size 0x0
-     */
-    public static final Rectangle ZERO_BOX = new Rectangle(0, 0, 0, 0);
-
-    /**
      * The default style a simple node should use for it's text
      */
     public static final BoxTextElement SIMPLE_NODE_TEXT_ELEMSTYLE;
@@ -137,11 +132,6 @@ public class BoxTextElement extends StyleElement {
      * The text this element should display.
      */
     public TextLabel text;
-    // Either boxProvider or box is not null. If boxProvider is different from
-    // null, this means, that the box can still change in future, otherwise
-    // it is fixed.
-    protected BoxProvider boxProvider;
-    protected Rectangle box;
     /**
      * The {@link HorizontalTextAlignment} for this text.
      */
@@ -150,17 +140,17 @@ public class BoxTextElement extends StyleElement {
      * The {@link VerticalTextAlignment} for this text.
      */
     public VerticalTextAlignment vAlign;
+    protected BoxProvider boxProvider;
 
     /**
      * Create a new {@link BoxTextElement}
      * @param c The current cascade
      * @param text The text to display
      * @param boxProvider The box provider to use
-     * @param box The initial box to use.
      * @param hAlign The {@link HorizontalTextAlignment}
      * @param vAlign The {@link VerticalTextAlignment}
      */
-    public BoxTextElement(Cascade c, TextLabel text, BoxProvider boxProvider, Rectangle box,
+    public BoxTextElement(Cascade c, TextLabel text, BoxProvider boxProvider,
             HorizontalTextAlignment hAlign, VerticalTextAlignment vAlign) {
         super(c, 5f);
         CheckParameterUtil.ensureParameterNotNull(text);
@@ -168,39 +158,17 @@ public class BoxTextElement extends StyleElement {
         CheckParameterUtil.ensureParameterNotNull(vAlign);
         this.text = text;
         this.boxProvider = boxProvider;
-        this.box = box == null ? ZERO_BOX : box;
         this.hAlign = hAlign;
         this.vAlign = vAlign;
     }
 
     /**
-     * Create a new {@link BoxTextElement} with a dynamic box
-     * @param env The MapCSS environment
-     * @param boxProvider The box provider that computes the box.
-     * @return A new {@link BoxTextElement} or <code>null</code> if the creation failed.
-     */
-    public static BoxTextElement create(Environment env, BoxProvider boxProvider) {
-        return create(env, boxProvider, null);
-    }
-
-    /**
-     * Create a new {@link BoxTextElement} with a fixed box
-     * @param env The MapCSS environment
-     * @param box The box
-     * @return A new {@link BoxTextElement} or <code>null</code> if the creation failed.
-     */
-    public static BoxTextElement create(Environment env, Rectangle box) {
-        return create(env, null, box);
-    }
-
-    /**
      * Create a new {@link BoxTextElement} with a boxprovider and a box.
      * @param env The MapCSS environment
      * @param boxProvider The box provider.
-     * @param box The box. Only considered if boxProvider is null.
      * @return A new {@link BoxTextElement} or <code>null</code> if the creation failed.
      */
-    public static BoxTextElement create(Environment env, BoxProvider boxProvider, Rectangle box) {
+    public static BoxTextElement create(Environment env, BoxProvider boxProvider) {
         initDefaultParameters();
 
         TextLabel text = TextLabel.create(env, defaultTextColorCache, false);
@@ -243,7 +211,7 @@ public class BoxTextElement extends StyleElement {
                 vAlign = VerticalTextAlignment.BOTTOM;
         }
 
-        return new BoxTextElement(c, text, boxProvider, box, hAlign, vAlign);
+        return new BoxTextElement(c, text, boxProvider, hAlign, vAlign);
     }
 
     /**
@@ -251,15 +219,7 @@ public class BoxTextElement extends StyleElement {
      * @return The box.
      */
     public Rectangle getBox() {
-        if (boxProvider != null) {
-            BoxProviderResult result = boxProvider.get();
-            if (!result.isTemporary()) {
-                box = result.getBox();
-                boxProvider = null;
-            }
-            return result.getBox();
-        }
-        return box;
+        return boxProvider.get().getBox();
     }
 
     private static void initDefaultParameters() {
@@ -284,18 +244,17 @@ public class BoxTextElement extends StyleElement {
         return hAlign == that.hAlign &&
                vAlign == that.vAlign &&
                Objects.equals(text, that.text) &&
-               Objects.equals(boxProvider, that.boxProvider) &&
-               Objects.equals(box, that.box);
+               Objects.equals(boxProvider, that.boxProvider);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(super.hashCode(), text, boxProvider, box, hAlign, vAlign);
+        return Objects.hash(super.hashCode(), text, boxProvider, hAlign, vAlign);
     }
 
     @Override
     public String toString() {
-        return "BoxTextElemStyle{" + super.toString() + ' ' + text.toStringImpl()
-                + " box=" + box + " hAlign=" + hAlign + " vAlign=" + vAlign + '}';
+        return "BoxTextElement{" + super.toString() + ' ' + text.toStringImpl()
+                + " box=" + getBox() + " hAlign=" + hAlign + " vAlign=" + vAlign + '}';
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineElement.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineElement.java
index 59db0be..6b31752 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineElement.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineElement.java
@@ -69,7 +69,6 @@ public class LineElement extends StyleElement {
     @Override
     public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings paintSettings, StyledMapRenderer painter,
             boolean selected, boolean outermember, boolean member) {
-        Way w = (Way) primitive;
         /* show direction arrows, if draw.segment.relevant_directions_only is not set,
         the way is tagged with a direction key
         (even if the tag is negated as in oneway=false) or the way is selected */
@@ -81,8 +80,8 @@ public class LineElement extends StyleElement {
         }
         boolean showOneway = !isModifier && !selected &&
                 !paintSettings.isUseRealWidth() &&
-                paintSettings.isShowOnewayArrow() && w.hasDirectionKeys();
-        boolean onewayReversed = w.reversedDirection();
+                paintSettings.isShowOnewayArrow() && primitive.hasDirectionKeys();
+        boolean onewayReversed = primitive.reversedDirection();
         /* head only takes over control if the option is true,
         the direction should be shown at all and not only because it's selected */
         boolean showOnlyHeadArrowOnly = showOrientation && !selected && paintSettings.isShowHeadArrowOnly();
@@ -108,24 +107,27 @@ public class LineElement extends StyleElement {
             myColor = paintSettings.getSelectedColor(color.getAlpha());
         } else if (member || outermember) {
             myColor = paintSettings.getRelationSelectedColor(color.getAlpha());
-        } else if (w.isDisabled()) {
+        } else if (primitive.isDisabled()) {
             myColor = paintSettings.getInactiveColor();
             myDashedColor = paintSettings.getInactiveColor();
         }
 
-        painter.drawWay(w, myColor, myLine, myDashLine, myDashedColor, offset, showOrientation,
-                showOnlyHeadArrowOnly, showOneway, onewayReversed);
-
-        if ((paintSettings.isShowOrderNumber() || (paintSettings.isShowOrderNumberOnSelectedWay() && selected))
-                && !painter.isInactiveMode()) {
-            int orderNumber = 0;
-            lastN = null;
-            for (Node n : w.getNodes()) {
-                if (lastN != null) {
-                    orderNumber++;
-                    painter.drawOrderNumber(lastN, n, orderNumber, myColor);
+        if (primitive instanceof Way) {
+            Way w = (Way) primitive;
+            painter.drawWay(w, myColor, myLine, myDashLine, myDashedColor, offset, showOrientation,
+                    showOnlyHeadArrowOnly, showOneway, onewayReversed);
+
+            if ((paintSettings.isShowOrderNumber() || (paintSettings.isShowOrderNumberOnSelectedWay() && selected))
+                    && !painter.isInactiveMode()) {
+                int orderNumber = 0;
+                lastN = null;
+                for (Node n : w.getNodes()) {
+                    if (lastN != null) {
+                        orderNumber++;
+                        painter.drawOrderNumber(lastN, n, orderNumber, myColor);
+                    }
+                    lastN = n;
                 }
-                lastN = n;
             }
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineTextElement.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineTextElement.java
index b225ebd..8639271 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineTextElement.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineTextElement.java
@@ -4,7 +4,6 @@ package org.openstreetmap.josm.gui.mappaint.styleelement;
 import java.util.Objects;
 
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.visitor.paint.MapPaintSettings;
 import org.openstreetmap.josm.data.osm.visitor.paint.PaintColors;
 import org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer;
@@ -12,6 +11,11 @@ import org.openstreetmap.josm.gui.mappaint.Cascade;
 import org.openstreetmap.josm.gui.mappaint.Environment;
 import org.openstreetmap.josm.gui.mappaint.Keyword;
 
+/**
+ * A text that is only on the line
+ * @deprecated since 11722. To be removed summer 2017
+ */
+ at Deprecated
 public class LineTextElement extends StyleElement {
 
     private final TextLabel text;
@@ -37,8 +41,7 @@ public class LineTextElement extends StyleElement {
     @Override
     public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings paintSettings, StyledMapRenderer painter,
             boolean selected, boolean outermember, boolean member) {
-        Way w = (Way) primitive;
-        painter.drawTextOnPath(w, text);
+        // nop
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/NodeElement.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/NodeElement.java
index 9331d83..97708a5 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/styleelement/NodeElement.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/NodeElement.java
@@ -32,7 +32,13 @@ import org.openstreetmap.josm.tools.Utils;
  * applies for Nodes and turn restriction relations
  */
 public class NodeElement extends StyleElement {
+    /**
+     * The image that is used to display this node. May be <code>null</code>
+     */
     public final MapImage mapImage;
+    /**
+     * The angle that is used to rotate {@link #mapImage}. May be <code>null</code> to indicate no rotation.
+     */
     public final RotationAngle mapImageAngle;
     /**
      * The symbol that should be used for drawing this node.
@@ -59,9 +65,14 @@ public class NodeElement extends StyleElement {
         super(c, defaultMajorZindex);
         this.mapImage = mapImage;
         this.symbol = symbol;
-        this.mapImageAngle = rotationAngle;
+        this.mapImageAngle = Objects.requireNonNull(rotationAngle, "rotationAngle");
     }
 
+    /**
+     * Creates a new node element for the given Environment
+     * @param env The environment
+     * @return The node element style or <code>null</code> if the node should not be painted.
+     */
     public static NodeElement create(Environment env) {
         return create(env, 4f, false);
     }
@@ -69,12 +80,32 @@ public class NodeElement extends StyleElement {
     private static NodeElement create(Environment env, float defaultMajorZindex, boolean allowDefault) {
         Cascade c = env.mc.getCascade(env.layer);
 
-        MapImage mapImage = createIcon(env, ICON_KEYS);
+        MapImage mapImage = createIcon(env);
         Symbol symbol = null;
         if (mapImage == null) {
             symbol = createSymbol(env);
         }
-        RotationAngle rotationAngle = null;
+
+        RotationAngle rotationAngle = createRotationAngle(env);
+
+        // optimization: if we neither have a symbol, nor a mapImage
+        // we don't have to check for the remaining style properties and we don't
+        // have to allocate a node element style.
+        if (!allowDefault && symbol == null && mapImage == null) return null;
+
+        return new NodeElement(c, mapImage, symbol, defaultMajorZindex, rotationAngle);
+    }
+
+    /**
+     * Reads the icon-rotation property and creates a rotation angle from it.
+     * @param env The environment
+     * @return The angle
+     * @since 11670
+     */
+    public static RotationAngle createRotationAngle(Environment env) {
+        Cascade c = env.mc.getCascade(env.layer);
+
+        RotationAngle rotationAngle = RotationAngle.NO_ROTATION;
         final Float angle = c.get(ICON_ROTATION, null, Float.class, true);
         if (angle != null) {
             rotationAngle = RotationAngle.buildStaticRotation(angle);
@@ -92,16 +123,26 @@ public class NodeElement extends StyleElement {
                 }
             }
         }
+        return rotationAngle;
+    }
 
-        // optimization: if we neither have a symbol, nor a mapImage
-        // we don't have to check for the remaining style properties and we don't
-        // have to allocate a node element style.
-        if (!allowDefault && symbol == null && mapImage == null) return null;
-
-        return new NodeElement(c, mapImage, symbol, defaultMajorZindex, rotationAngle);
+    /**
+     * Create a map icon for the environment using the default keys.
+     * @param env The environment to read the icon form
+     * @return The icon or <code>null</code> if no icon is defined
+     * @since 11670
+     */
+    public static MapImage createIcon(final Environment env) {
+        return createIcon(env, ICON_KEYS);
     }
 
-    public static MapImage createIcon(final Environment env, final String ... keys) {
+    /**
+     * Create a map icon for the environment.
+     * @param env The environment to read the icon form
+     * @param keys The keys, indexed by the ICON_..._IDX constants.
+     * @return The icon or <code>null</code> if no icon is defined
+     */
+    public static MapImage createIcon(final Environment env, final String... keys) {
         CheckParameterUtil.ensureParameterNotNull(env, "env");
         CheckParameterUtil.ensureParameterNotNull(keys, "keys");
 
@@ -142,7 +183,7 @@ public class NodeElement extends StyleElement {
         mapImage.offsetX = Math.round(offsetXF);
         mapImage.offsetY = Math.round(offsetYF);
 
-        mapImage.alpha = Math.min(255, Math.max(0, Main.pref.getInteger("mappaint.icon-image-alpha", 255)));
+        mapImage.alpha = Utils.clamp(Main.pref.getInteger("mappaint.icon-image-alpha", 255), 0, 255);
         Integer pAlpha = Utils.colorFloat2int(c.get(keys[ICON_OPACITY_IDX], null, float.class));
         if (pAlpha != null) {
             mapImage.alpha = pAlpha;
@@ -150,6 +191,11 @@ public class NodeElement extends StyleElement {
         return mapImage;
     }
 
+    /**
+     * Create a symbol for the environment
+     * @param env The environment to read the icon form
+     * @return The symbol.
+     */
     private static Symbol createSymbol(Environment env) {
         Cascade c = env.mc.getCascade(env.layer);
 
@@ -285,6 +331,10 @@ public class NodeElement extends StyleElement {
         painter.drawNodeSymbol(n, symbol, fillColor, strokeColor);
     }
 
+    /**
+     * Gets the selection box for this element.
+     * @return The selection box as {@link BoxProvider} object.
+     */
     public BoxProvider getBoxProvider() {
         if (mapImage != null)
             return mapImage.getBoxProvider();
@@ -325,16 +375,16 @@ public class NodeElement extends StyleElement {
 
     @Override
     public String toString() {
-        StringBuilder s = new StringBuilder(64).append("NodeElemStyle{").append(super.toString());
+        StringBuilder s = new StringBuilder(64).append("NodeElement{").append(super.toString());
         if (mapImage != null) {
             s.append(" icon=[" + mapImage + ']');
         }
+        if (mapImage != null && mapImageAngle != null) {
+            s.append(" mapImageAngle=[" + mapImageAngle + ']');
+        }
         if (symbol != null) {
             s.append(" symbol=[" + symbol + ']');
         }
-        if (mapImageAngle != null) {
-            s.append(" mapImageAngle=[" + mapImageAngle + ']');
-        }
         s.append('}');
         return s.toString();
     }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/RepeatImageElement.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/RepeatImageElement.java
index fc4dfb0..ca9a254 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/styleelement/RepeatImageElement.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/RepeatImageElement.java
@@ -80,8 +80,10 @@ public class RepeatImageElement extends StyleElement {
     @Override
     public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings paintSettings, StyledMapRenderer painter,
             boolean selected, boolean outermember, boolean member) {
-        Way w = (Way) primitive;
-        painter.drawRepeatImage(w, pattern, painter.isInactiveMode() || w.isDisabled(), offset, spacing, phase, align);
+        if (primitive instanceof Way) {
+            Way w = (Way) primitive;
+            painter.drawRepeatImage(w, pattern, painter.isInactiveMode() || w.isDisabled(), offset, spacing, phase, align);
+        }
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/TextElement.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/TextElement.java
new file mode 100644
index 0000000..9987940
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/TextElement.java
@@ -0,0 +1,88 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.mappaint.styleelement;
+
+import java.util.Objects;
+
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.visitor.paint.MapPaintSettings;
+import org.openstreetmap.josm.data.osm.visitor.paint.PaintColors;
+import org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer;
+import org.openstreetmap.josm.gui.mappaint.Cascade;
+import org.openstreetmap.josm.gui.mappaint.Environment;
+import org.openstreetmap.josm.gui.mappaint.Keyword;
+import org.openstreetmap.josm.gui.mappaint.styleelement.placement.CompletelyInsideAreaStrategy;
+
+/**
+ * The text that is drawn for a way/area. It may be drawn along the outline or onto the way.
+ *
+ * @since 11722
+ */
+public class TextElement extends StyleElement {
+
+    private final TextLabel text;
+
+    protected TextElement(Cascade c, TextLabel text) {
+        super(c, 4.9f);
+        this.text = text;
+    }
+
+    /**
+     * Create a new text element
+     * @param env The environment to read the text data from
+     * @return The text element or <code>null</code> if it could not be created.
+     */
+    public static TextElement create(final Environment env) {
+        final Cascade c = env.mc.getCascade(env.layer);
+
+        TextLabel text = TextLabel.create(env, PaintColors.TEXT.get(), false);
+        if (text == null)
+            return null;
+        return new TextElement(c, text);
+    }
+
+    /**
+     * JOSM traditionally adds both line and content text elements if a fill style was set.
+     *
+     * For now, we simulate this by generating a TextElement if no text-position was provided.
+     * @param env The environment to read the text data from
+     * @return The text element or <code>null</code> if it could not be created.
+     */
+    public static TextElement createForContent(Environment env) {
+        final Cascade c = env.mc.getCascade(env.layer);
+        Keyword positionKeyword = c.get(AreaElement.TEXT_POSITION, null, Keyword.class);
+        if (positionKeyword != null) {
+            return null; // No need for this hack.
+        }
+
+        TextLabel text = TextLabel.create(env, PaintColors.TEXT.get(), true);
+        if (text == null) {
+            return null;
+        }
+        return new TextElement(c, text.withPosition(CompletelyInsideAreaStrategy.INSTANCE));
+    }
+
+    @Override
+    public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings paintSettings, StyledMapRenderer painter,
+            boolean selected, boolean outermember, boolean member) {
+        painter.drawText(primitive, text);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        if (!super.equals(obj)) return false;
+        TextElement that = (TextElement) obj;
+        return Objects.equals(text, that.text);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(super.hashCode(), text);
+    }
+
+    @Override
+    public String toString() {
+        return "TextElement{" + super.toString() + "text=" + text + '}';
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/TextLabel.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/TextLabel.java
index 16d4a9f..f4474d4 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/styleelement/TextLabel.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/TextLabel.java
@@ -14,6 +14,8 @@ import org.openstreetmap.josm.gui.mappaint.StyleKeys;
 import org.openstreetmap.josm.gui.mappaint.styleelement.LabelCompositionStrategy.DeriveLabelFromNameTagsCompositionStrategy;
 import org.openstreetmap.josm.gui.mappaint.styleelement.LabelCompositionStrategy.StaticLabelCompositionStrategy;
 import org.openstreetmap.josm.gui.mappaint.styleelement.LabelCompositionStrategy.TagLookupCompositionStrategy;
+import org.openstreetmap.josm.gui.mappaint.styleelement.placement.CompletelyInsideAreaStrategy;
+import org.openstreetmap.josm.gui.mappaint.styleelement.placement.PositionForAreaStrategy;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -24,19 +26,42 @@ import org.openstreetmap.josm.tools.Utils;
 public class TextLabel implements StyleKeys {
     public static final LabelCompositionStrategy AUTO_LABEL_COMPOSITION_STRATEGY = new DeriveLabelFromNameTagsCompositionStrategy();
 
-    /** the strategy for building the actual label value for a given a {@link OsmPrimitive}.
+    /**
+     * The strategy for building the actual label value for a given a {@link OsmPrimitive}.
      * Check for null before accessing.
      */
     public LabelCompositionStrategy labelCompositionStrategy;
-    /** the font to be used when rendering*/
+    /**
+     * the font to be used when rendering
+     */
     public Font font;
+    /**
+     * The x offset of the text.
+     */
     public int xOffset;
+    /**
+     * The y offset of the text.
+     */
     public int yOffset;
+    /**
+     * The color to draw the text in, includes alpha.
+     */
     public Color color;
+    /**
+     * The radius of the halo effect.
+     */
     public Float haloRadius;
+    /**
+     * The color of the halo effect.
+     */
     public Color haloColor;
 
     /**
+     * The position strategy for this text label.
+     */
+    private final PositionForAreaStrategy labelPositionStrategy;
+
+    /**
      * Creates a new text element
      *
      * @param strategy the strategy indicating how the text is composed for a specific {@link OsmPrimitive} to be rendered.
@@ -47,17 +72,36 @@ public class TextLabel implements StyleKeys {
      * @param color the color to be used. Must not be null
      * @param haloRadius halo radius
      * @param haloColor halo color
+     * @deprecated since 11722, To be removed in mid-2017
      */
+    @Deprecated
     public TextLabel(LabelCompositionStrategy strategy, Font font, int xOffset, int yOffset, Color color, Float haloRadius, Color haloColor) {
-        CheckParameterUtil.ensureParameterNotNull(font);
-        CheckParameterUtil.ensureParameterNotNull(color);
-        labelCompositionStrategy = strategy;
-        this.font = font;
+        this(strategy, font, xOffset, yOffset, color, haloRadius, haloColor, new CompletelyInsideAreaStrategy());
+    }
+
+    /**
+     * Creates a new text element
+     *
+     * @param strategy the strategy indicating how the text is composed for a specific {@link OsmPrimitive} to be rendered.
+     * If null, no label is rendered.
+     * @param font the font to be used. Must not be null.
+     * @param xOffset x offset
+     * @param yOffset y offset
+     * @param color the color to be used. Must not be null
+     * @param haloRadius halo radius
+     * @param haloColor halo color
+     * @param labelPositionStrategy The position in the area.
+     */
+    protected TextLabel(LabelCompositionStrategy strategy, Font font, int xOffset, int yOffset, Color color, Float haloRadius,
+            Color haloColor, PositionForAreaStrategy labelPositionStrategy) {
+        this.labelCompositionStrategy = strategy;
+        this.font = Objects.requireNonNull(font, "font");
         this.xOffset = xOffset;
         this.yOffset = yOffset;
-        this.color = color;
+        this.color = Objects.requireNonNull(color, "color");
         this.haloRadius = haloRadius;
         this.haloColor = haloColor;
+        this.labelPositionStrategy = Objects.requireNonNull(labelPositionStrategy, "labelPositionStrategy");
     }
 
     /**
@@ -73,6 +117,24 @@ public class TextLabel implements StyleKeys {
         this.color = other.color;
         this.haloColor = other.haloColor;
         this.haloRadius = other.haloRadius;
+        this.labelPositionStrategy = other.labelPositionStrategy;
+    }
+
+    /**
+     * Copy constructor that changes the position strategy.
+     *
+     * @param other the other element.
+     * @param labelPositionStrategy the position
+     */
+    private TextLabel(TextLabel other, PositionForAreaStrategy labelPositionStrategy) {
+        this.labelCompositionStrategy = other.labelCompositionStrategy;
+        this.font = other.font;
+        this.xOffset = other.xOffset;
+        this.yOffset = other.yOffset;
+        this.color = other.color;
+        this.haloColor = other.haloColor;
+        this.haloRadius = other.haloRadius;
+        this.labelPositionStrategy = labelPositionStrategy;
     }
 
     /**
@@ -145,8 +207,7 @@ public class TextLabel implements StyleKeys {
 
         Color color = c.get(TEXT_COLOR, defaultTextColor, Color.class);
         float alpha = c.get(TEXT_OPACITY, 1f, Float.class);
-        color = new Color(color.getRed(), color.getGreen(),
-                color.getBlue(), Utils.colorFloat2int(alpha));
+        color = Utils.alphaMultiply(color, alpha);
 
         Float haloRadius = c.get(TEXT_HALO_RADIUS, null, Float.class);
         if (haloRadius != null && haloRadius <= 0) {
@@ -155,12 +216,14 @@ public class TextLabel implements StyleKeys {
         Color haloColor = null;
         if (haloRadius != null) {
             haloColor = c.get(TEXT_HALO_COLOR, Utils.complement(color), Color.class);
-            float haloAlpha = c.get(TEXT_HALO_OPACITY, 1f, Float.class);
-            haloColor = new Color(haloColor.getRed(), haloColor.getGreen(),
-                    haloColor.getBlue(), Utils.colorFloat2int(haloAlpha));
+            float haloAlphaFactor = c.get(TEXT_HALO_OPACITY, 1f, Float.class);
+            haloColor = Utils.alphaMultiply(haloColor, haloAlphaFactor);
         }
 
-        return new TextLabel(strategy, font, (int) xOffset, -(int) yOffset, color, haloRadius, haloColor);
+        Keyword positionKeyword = c.get(AreaElement.TEXT_POSITION, null, Keyword.class);
+        PositionForAreaStrategy position = PositionForAreaStrategy.forKeyword(positionKeyword);
+
+        return new TextLabel(strategy, font, (int) xOffset, -(int) yOffset, color, haloRadius, haloColor, position);
     }
 
     /**
@@ -175,6 +238,19 @@ public class TextLabel implements StyleKeys {
         return labelCompositionStrategy.compose(osm);
     }
 
+    /**
+     * Gets the strategy that defines where to place the label.
+     * @return The strategy. Never null.
+     * @since 11722
+     */
+    public PositionForAreaStrategy getLabelPositionStrategy() {
+        return labelPositionStrategy;
+    }
+
+    public TextLabel withPosition(PositionForAreaStrategy labelPositionStrategy) {
+        return new TextLabel(this, labelPositionStrategy);
+    }
+
     @Override
     public String toString() {
         return "TextElement{" + toStringImpl() + '}';
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/placement/CompletelyInsideAreaStrategy.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/placement/CompletelyInsideAreaStrategy.java
new file mode 100644
index 0000000..486aa24
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/placement/CompletelyInsideAreaStrategy.java
@@ -0,0 +1,97 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.mappaint.styleelement.placement;
+
+import java.awt.Rectangle;
+import java.awt.geom.Rectangle2D;
+
+import org.openstreetmap.josm.gui.MapViewState;
+import org.openstreetmap.josm.gui.draw.MapViewPath;
+import org.openstreetmap.josm.gui.draw.MapViewPositionAndRotation;
+
+/**
+ * Places the label / icon so that it is completely inside the area.
+ *
+ * @author Michael Zangl
+ * @since 11722
+ * @since 11748 moved to own file
+ */
+public class CompletelyInsideAreaStrategy implements PositionForAreaStrategy {
+    /**
+     * An instance of this class.
+     */
+    public static final CompletelyInsideAreaStrategy INSTANCE = new CompletelyInsideAreaStrategy();
+
+    @Override
+    public MapViewPositionAndRotation findLabelPlacement(MapViewPath path, Rectangle2D nb) {
+        // Using the Centroid is Nicer for buildings like: +--------+
+        // but this needs to be fast.  As most houses are  |   42   |
+        // boxes anyway, the center of the bounding box    +---++---+
+        // will have to do.                                    ++
+        // Centroids are not optimal either, just imagine a U-shaped house.
+
+        Rectangle pb = path.getBounds();
+
+        // quick check to see if label box is smaller than primitive box
+        if (pb.width < nb.getWidth() || pb.height < nb.getHeight()) {
+            return null;
+        }
+
+        final double w = pb.width - nb.getWidth();
+        final double h = pb.height - nb.getHeight();
+
+        final int x2 = pb.x + (int) (w / 2.0);
+        final int y2 = pb.y + (int) (h / 2.0);
+
+        final int nbw = (int) nb.getWidth();
+        final int nbh = (int) nb.getHeight();
+
+        Rectangle centeredNBounds = new Rectangle(x2, y2, nbw, nbh);
+
+        // slower check to see if label is displayed inside primitive shape
+        if (path.contains(centeredNBounds)) {
+            return centerOf(path.getMapViewState(), centeredNBounds);
+        }
+
+        // if center position (C) is not inside osm shape, try naively some other positions as follows:
+        final int x1 = pb.x + (int) (.25 * w);
+        final int x3 = pb.x + (int) (.75 * w);
+        final int y1 = pb.y + (int) (.25 * h);
+        final int y3 = pb.y + (int) (.75 * h);
+        // +-----------+
+        // |  5  1  6  |
+        // |  4  C  2  |
+        // |  8  3  7  |
+        // +-----------+
+        Rectangle[] candidates = new Rectangle[] {
+                new Rectangle(x2, y1, nbw, nbh),
+                new Rectangle(x3, y2, nbw, nbh),
+                new Rectangle(x2, y3, nbw, nbh),
+                new Rectangle(x1, y2, nbw, nbh),
+                new Rectangle(x1, y1, nbw, nbh),
+                new Rectangle(x3, y1, nbw, nbh),
+                new Rectangle(x3, y3, nbw, nbh),
+                new Rectangle(x1, y3, nbw, nbh)
+        };
+        // Dumb algorithm to find a better placement. We could surely find a smarter one but it should
+        // solve most of building issues with only few calculations (8 at most)
+        for (int i = 0; i < candidates.length; i++) {
+            centeredNBounds = candidates[i];
+            if (path.contains(centeredNBounds)) {
+                return centerOf(path.getMapViewState(), centeredNBounds);
+            }
+        }
+
+        // none found
+        return null;
+    }
+
+    private static MapViewPositionAndRotation centerOf(MapViewState mapViewState, Rectangle centeredNBounds) {
+        return new MapViewPositionAndRotation(
+                mapViewState.getForView(centeredNBounds.getCenterX(), centeredNBounds.getCenterY()), 0);
+    }
+
+    @Override
+    public boolean supportsGlyphVector() {
+        return false;
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/placement/OnLineStrategy.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/placement/OnLineStrategy.java
new file mode 100644
index 0000000..0564352
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/placement/OnLineStrategy.java
@@ -0,0 +1,334 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.mappaint.styleelement.placement;
+
+import java.awt.font.GlyphVector;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Rectangle2D;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.IntStream;
+
+import org.openstreetmap.josm.gui.MapViewState.MapViewPoint;
+import org.openstreetmap.josm.gui.draw.MapViewPath;
+import org.openstreetmap.josm.gui.draw.MapViewPath.PathSegmentConsumer;
+import org.openstreetmap.josm.gui.draw.MapViewPositionAndRotation;
+
+/**
+ * Places the label onto the line.
+ *
+ * @author Michael Zangl
+ * @since 11722
+ * @since 11748 moved to own file
+ */
+public class OnLineStrategy implements PositionForAreaStrategy {
+    /**
+     * An instance of this class.
+     */
+    public static final OnLineStrategy INSTANCE = new OnLineStrategy(0);
+
+    private final double yOffset;
+
+    /**
+     * Create a new strategy that places the text on the line.
+     * @param yOffset The offset sidewards to the line.
+     */
+    public OnLineStrategy(double yOffset) {
+        this.yOffset = yOffset;
+    }
+
+    @Override
+    public MapViewPositionAndRotation findLabelPlacement(MapViewPath path, Rectangle2D nb) {
+        return findOptimalWayPosition(nb, path).map(best -> {
+            MapViewPoint center = best.start.interpolate(best.end, .5);
+            return new MapViewPositionAndRotation(center, upsideTheta(best));
+        }).orElse(null);
+    }
+
+    private static double upsideTheta(HalfSegment best) {
+        double theta = theta(best.start, best.end);
+        if (theta < -Math.PI / 2) {
+            return theta + Math.PI;
+        } else if (theta > Math.PI / 2) {
+            return theta - Math.PI;
+        } else {
+            return theta;
+        }
+    }
+
+    @Override
+    public boolean supportsGlyphVector() {
+        return true;
+    }
+
+    @Override
+    public List<GlyphVector> generateGlyphVectors(MapViewPath path, Rectangle2D nb, List<GlyphVector> gvs,
+            boolean isDoubleTranslationBug) {
+        // Find the position on the way the font should be placed.
+        // If none is found, use the middle of the way.
+        double middleOffset = findOptimalWayPosition(nb, path).map(segment -> segment.offset)
+                .orElse(path.getLength() / 2);
+
+        // Check that segment of the way. Compute in which direction the text should be rendered.
+        // It is rendered in a way that ensures that at least 50% of the text are rotated with the right side up.
+        UpsideComputingVisitor upside = new UpsideComputingVisitor(middleOffset - nb.getWidth() / 2,
+                middleOffset + nb.getWidth() / 2);
+        path.visitLine(upside);
+        boolean doRotateText = upside.shouldRotateText();
+
+        // Compute the list of glyphs to draw, along with their offset on the current line.
+        List<OffsetGlyph> offsetGlyphs = computeOffsetGlyphs(gvs,
+                middleOffset + (doRotateText ? 1 : -1) * nb.getWidth() / 2, doRotateText);
+
+        // Order the glyphs along the line to ensure that they are drawn corretly.
+        Collections.sort(offsetGlyphs, Comparator.comparing(OffsetGlyph::getOffset));
+
+        // Now translate all glyphs. This will modify the glyphs stored in gvs.
+        path.visitLine(new GlyphRotatingVisitor(offsetGlyphs, isDoubleTranslationBug));
+        return gvs;
+    }
+
+    /**
+     * Create a list of glyphs with an offset along the way
+     * @param gvs The list of glyphs
+     * @param startOffset The offset in the line
+     * @param rotateText Rotate the text by 180°
+     * @return The list of glyphs.
+     */
+    private static List<OffsetGlyph> computeOffsetGlyphs(List<GlyphVector> gvs, double startOffset, boolean rotateText) {
+        double offset = startOffset;
+        ArrayList<OffsetGlyph> offsetGlyphs = new ArrayList<>();
+        for (GlyphVector gv : gvs) {
+            double gvOffset = offset;
+            IntStream.range(0, gv.getNumGlyphs())
+                    .mapToObj(i -> new OffsetGlyph(gvOffset, rotateText, gv, i))
+                    .forEach(offsetGlyphs::add);
+            offset += (rotateText ? -1 : 1) + gv.getLogicalBounds().getBounds2D().getWidth();
+        }
+        return offsetGlyphs;
+    }
+
+    private static Optional<HalfSegment> findOptimalWayPosition(Rectangle2D rect, MapViewPath path) {
+        // find half segments that are long enough to draw text on (don't draw text over the cross hair in the center of each segment)
+        List<HalfSegment> longHalfSegment = new ArrayList<>();
+        double minSegmentLength = 2 * (rect.getWidth() + 4);
+        double length = path.visitLine((inLineOffset, start, end, startIsOldEnd) -> {
+            double segmentLength = start.distanceToInView(end);
+            if (segmentLength > minSegmentLength) {
+                MapViewPoint center = start.interpolate(end, .5);
+                double q = computeQuality(start, center);
+                // prefer the first one for quality equality.
+                longHalfSegment.add(new HalfSegment(start, center, q + .1, inLineOffset + .25 * segmentLength));
+
+                q = computeQuality(center, end);
+                longHalfSegment.add(new HalfSegment(center, end, q, inLineOffset + .75 * segmentLength));
+            }
+        });
+
+        // find the segment with the best quality. If there are several with best quality, the one close to the center is prefered.
+        return longHalfSegment.stream().max(
+                Comparator.comparingDouble(segment -> segment.quality - 1e-5 * Math.abs(segment.offset - length / 2)));
+    }
+
+    private static double computeQuality(MapViewPoint p1, MapViewPoint p2) {
+        double q = 0;
+        if (p1.isInView()) {
+            q += 1;
+        }
+        if (p2.isInView()) {
+            q += 1;
+        }
+        return q;
+    }
+
+    /**
+     * A half segment that can be used to place text on it. Used in the drawTextOnPath algorithm.
+     * @author Michael Zangl
+     */
+    private static class HalfSegment {
+        /**
+         * start point of half segment
+         */
+        private final MapViewPoint start;
+
+        /**
+         * end point of half segment
+         */
+        private final MapViewPoint end;
+
+        /**
+         * quality factor (off screen / partly on screen / fully on screen)
+         */
+        private final double quality;
+
+        /**
+         * The offset in the path.
+         */
+        private final double offset;
+
+        /**
+         * Create a new half segment
+         * @param start The start along the way
+         * @param end The end of the segment
+         * @param quality A quality factor.
+         * @param offset The offset in the path.
+         */
+        HalfSegment(MapViewPoint start, MapViewPoint end, double quality, double offset) {
+            super();
+            this.start = start;
+            this.end = end;
+            this.quality = quality;
+            this.offset = offset;
+        }
+
+        @Override
+        public String toString() {
+            return "HalfSegment [start=" + start + ", end=" + end + ", quality=" + quality + ']';
+        }
+    }
+
+    /**
+     * A visitor that computes the side of the way that is the upper one for each segment and computes the dominant upper side of the way.
+     * This is used to always place at least 50% of the text correctly.
+     */
+    private static class UpsideComputingVisitor implements PathSegmentConsumer {
+
+        private final double startOffset;
+        private final double endOffset;
+
+        private double upsideUpLines;
+        private double upsideDownLines;
+
+        UpsideComputingVisitor(double startOffset, double endOffset) {
+            super();
+            this.startOffset = startOffset;
+            this.endOffset = endOffset;
+        }
+
+        @Override
+        public void addLineBetween(double inLineOffset, MapViewPoint start, MapViewPoint end, boolean startIsOldEnd) {
+            if (inLineOffset > endOffset) {
+                return;
+            }
+            double length = start.distanceToInView(end);
+            if (inLineOffset + length < startOffset) {
+                return;
+            }
+
+            double segmentStart = Math.max(inLineOffset, startOffset);
+            double segmentEnd = Math.min(inLineOffset + length, endOffset);
+
+            double segmentLength = segmentEnd - segmentStart;
+
+            if (start.getInViewX() < end.getInViewX()) {
+                upsideUpLines += segmentLength;
+            } else {
+                upsideDownLines += segmentLength;
+            }
+        }
+
+        /**
+         * Check if the text should be rotated by 180°
+         * @return if the text should be rotated.
+         */
+        boolean shouldRotateText() {
+            return upsideUpLines < upsideDownLines;
+        }
+    }
+
+    /**
+     * Rotate the glyphs along a path.
+     */
+    private class GlyphRotatingVisitor implements PathSegmentConsumer {
+        private final Iterator<OffsetGlyph> gvs;
+        private final boolean isDoubleTranslationBug;
+        private OffsetGlyph next;
+
+        /**
+         * Create a new {@link GlyphRotatingVisitor}
+         * @param gvs The glyphs to draw. Sorted along the line
+         * @param isDoubleTranslationBug true to fix a double translation bug.
+         */
+        GlyphRotatingVisitor(List<OffsetGlyph> gvs, boolean isDoubleTranslationBug) {
+            this.isDoubleTranslationBug = isDoubleTranslationBug;
+            this.gvs = gvs.iterator();
+            takeNext();
+            while (next != null && next.offset < 0) {
+                // skip them
+                takeNext();
+            }
+        }
+
+        private void takeNext() {
+            if (gvs.hasNext()) {
+                next = gvs.next();
+            } else {
+                next = null;
+            }
+        }
+
+        @Override
+        public void addLineBetween(double inLineOffset, MapViewPoint start, MapViewPoint end, boolean startIsOldEnd) {
+            double segLength = start.distanceToInView(end);
+            double segEnd = inLineOffset + segLength;
+            double theta = theta(start, end);
+            while (next != null && next.offset < segEnd) {
+                Rectangle2D rect = next.getBounds();
+                double centerY = 0;
+                MapViewPoint p = start.interpolate(end, (next.offset - inLineOffset) / segLength);
+
+                AffineTransform trfm = new AffineTransform();
+                trfm.translate(-rect.getCenterX(), -centerY);
+                trfm.translate(p.getInViewX(), p.getInViewY());
+                trfm.rotate(theta + next.preRotate, rect.getWidth() / 2, centerY);
+                trfm.translate(0, next.glyph.getFont().getSize2D() * .25);
+                trfm.translate(0, yOffset);
+                if (isDoubleTranslationBug) {
+                    // scale the translation components by one half
+                    AffineTransform tmp = AffineTransform.getTranslateInstance(-0.5 * trfm.getTranslateX(),
+                            -0.5 * trfm.getTranslateY());
+                    tmp.concatenate(trfm);
+                    trfm = tmp;
+                }
+                next.glyph.setGlyphTransform(next.glyphIndex, trfm);
+                takeNext();
+            }
+        }
+    }
+
+    private static class OffsetGlyph {
+        private final double offset;
+        private final double preRotate;
+        private final GlyphVector glyph;
+        private final int glyphIndex;
+
+        OffsetGlyph(double offset, boolean rotateText, GlyphVector glyph, int glyphIndex) {
+            super();
+            this.preRotate = rotateText ? Math.PI : 0;
+            this.glyph = glyph;
+            this.glyphIndex = glyphIndex;
+            Rectangle2D rect = getBounds();
+            this.offset = offset + (rotateText ? -1 : 1) * (rect.getX() + rect.getWidth() / 2);
+        }
+
+        Rectangle2D getBounds() {
+            return glyph.getGlyphLogicalBounds(glyphIndex).getBounds2D();
+        }
+
+        double getOffset() {
+            return offset;
+        }
+
+        @Override
+        public String toString() {
+            return "OffsetGlyph [offset=" + offset + ", preRotate=" + preRotate + ", glyphIndex=" + glyphIndex + ']';
+        }
+    }
+
+    private static double theta(MapViewPoint start, MapViewPoint end) {
+        return Math.atan2(end.getInViewY() - start.getInViewY(), end.getInViewX() - start.getInViewX());
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/placement/PartiallyInsideAreaStrategy.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/placement/PartiallyInsideAreaStrategy.java
new file mode 100644
index 0000000..778c536
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/placement/PartiallyInsideAreaStrategy.java
@@ -0,0 +1,43 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.mappaint.styleelement.placement;
+
+import java.awt.geom.Rectangle2D;
+
+import org.openstreetmap.josm.gui.draw.MapViewPath;
+import org.openstreetmap.josm.gui.draw.MapViewPositionAndRotation;
+
+/**
+ * A strategy that places the label / icon so that is is on the area.
+ *
+ * The center of that place should be in the area, but the icon / label may overlap on the edges.
+ *
+ * @author Michael Zangl
+ * @since 11722
+ * @since 11748 moved to own file
+ */
+public class PartiallyInsideAreaStrategy extends CompletelyInsideAreaStrategy {
+    /**
+     * An instance of this class.
+     */
+    public static final PartiallyInsideAreaStrategy INSTANCE = new PartiallyInsideAreaStrategy();
+
+    @Override
+    public MapViewPositionAndRotation findLabelPlacement(MapViewPath path, Rectangle2D nb) {
+        MapViewPositionAndRotation inside = super.findLabelPlacement(path, nb);
+        if (inside != null) {
+            return inside;
+        }
+
+        double nbdx = Math.max(0, (nb.getWidth() - 20) / 2);
+        double nbdy = Math.max(0, (nb.getHeight() - 10) / 2);
+
+        if (nbdx < .5 && nbdy < .5) {
+            // we can't do any better
+            return null;
+        } else {
+            Rectangle2D smallNb = new Rectangle2D.Double(nb.getX() + nbdx, nb.getY() + nbdy,
+                    nb.getWidth() - 2 * nbdx, nb.getHeight() - 2 * nbdy);
+            return super.findLabelPlacement(path, smallNb);
+        }
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/placement/PositionForAreaStrategy.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/placement/PositionForAreaStrategy.java
new file mode 100644
index 0000000..03fd9b3
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/placement/PositionForAreaStrategy.java
@@ -0,0 +1,81 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.mappaint.styleelement.placement;
+
+import java.awt.font.GlyphVector;
+import java.awt.geom.Rectangle2D;
+import java.util.List;
+
+import org.openstreetmap.josm.gui.draw.MapViewPath;
+import org.openstreetmap.josm.gui.draw.MapViewPositionAndRotation;
+import org.openstreetmap.josm.gui.mappaint.Keyword;
+
+/**
+ * This strategy defines how to place a label or icon inside the area.
+ *
+ * @author Michael Zangl
+ * @since 11722
+ * @since 11748 moved to own file
+ */
+public interface PositionForAreaStrategy {
+    /**
+     * Finds the correct position of a label / icon inside the area.
+     * @param path The area to search in
+     * @param nb The bounding box of the thing we are searching a place for.
+     * @return The position as rectangle with the same dimension as nb. <code>null</code> if none was found.
+     */
+    MapViewPositionAndRotation findLabelPlacement(MapViewPath path, Rectangle2D nb);
+
+    /**
+     * Checks whether this placement strategy supports more detailed (rotation / ...) placement using a glyph vector.
+     * @return <code>true</code> if it is supported.
+     */
+    boolean supportsGlyphVector();
+
+    /**
+     * Generates the transformed glyph vectors for the given text.
+     * @param path The path to place the text along
+     * @param nb The bounds of the text
+     * @param gvs The glyph vectors for the text. May be modified
+     * @param isDoubleTranslationBug <code>true</code> to fix a glyph placement bug.
+     *
+     * @return The glyph vectors.
+     * @throws UnsupportedOperationException if {@link #supportsGlyphVector()} returns false
+     */
+    default List<GlyphVector> generateGlyphVectors(
+            MapViewPath path, Rectangle2D nb, List<GlyphVector> gvs, boolean isDoubleTranslationBug) {
+        throw new UnsupportedOperationException("Single glyph transformation is not supported by this implementation");
+    }
+
+    /**
+     * Gets a strategy for the given keyword.
+     * @param keyword The text position keyword.
+     * @return The strategy or line if none was specified.
+     * @since 11722
+     */
+    static PositionForAreaStrategy forKeyword(Keyword keyword) {
+        return forKeyword(keyword, OnLineStrategy.INSTANCE);
+    }
+
+    /**
+     * Gets a strategy for the given keyword.
+     * @param keyword The text position keyword.
+     * @param defaultStrategy The default if no strategy was recognized.
+     * @return The strategy or line if none was specified.
+     * @since 11722
+     */
+    static PositionForAreaStrategy forKeyword(Keyword keyword, PositionForAreaStrategy defaultStrategy) {
+        if (keyword == null) {
+            return defaultStrategy;
+        }
+        switch (keyword.val) {
+        case "center":
+            return PartiallyInsideAreaStrategy.INSTANCE;
+        case "inside":
+            return CompletelyInsideAreaStrategy.INSTANCE;
+        case "line":
+            return OnLineStrategy.INSTANCE;
+        default:
+            return defaultStrategy;
+        }
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/placement/package-info.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/placement/package-info.java
new file mode 100644
index 0000000..430d345
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/placement/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Label placement strategy for map paint styles.
+ */
+package org.openstreetmap.josm.gui.mappaint.styleelement.placement;
diff --git a/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java b/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
index 1136b83..94e44e9 100644
--- a/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
+++ b/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
@@ -598,7 +598,7 @@ public final class PreferenceTabbedPane extends JTabbedPane implements MouseWhee
                     setSelectedIndex(index);
                 } catch (SecurityException ex) {
                     Main.error(ex);
-                } catch (RuntimeException ex) {
+                } catch (RuntimeException ex) { // NOPMD
                     // allow to change most settings even if e.g. a plugin fails
                     BugReportExceptionHandler.handleException(ex);
                 } finally {
@@ -615,7 +615,7 @@ public final class PreferenceTabbedPane extends JTabbedPane implements MouseWhee
                 sps.addGui(this);
             } catch (SecurityException ex) {
                 Main.error(ex);
-            } catch (RuntimeException ex) {
+            } catch (RuntimeException ex) { // NOPMD
                 BugReportExceptionHandler.handleException(ex);
             } finally {
                 settingsInitialized.add(sps);
diff --git a/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java b/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
index 1c57c6d..54d686b 100644
--- a/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
+++ b/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
@@ -61,9 +61,12 @@ import javax.swing.tree.TreePath;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ActionParameter;
 import org.openstreetmap.josm.actions.AdaptableAction;
+import org.openstreetmap.josm.actions.AddImageryLayerAction;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.actions.ParameterizedAction;
 import org.openstreetmap.josm.actions.ParameterizedActionDecorator;
+import org.openstreetmap.josm.data.imagery.ImageryInfo;
+import org.openstreetmap.josm.data.imagery.ImageryLayerInfo;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -78,6 +81,12 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
     private static final String EMPTY_TOOLBAR_MARKER = "<!-empty-!>";
 
     /**
+     * The prefix for imagery toolbar entries.
+     * @since 11657
+     */
+    public static final String IMAGERY_PREFIX = "imagery_";
+
+    /**
      * Action definition.
      */
     public static class ActionDefinition {
@@ -252,6 +261,11 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
             }
         }
 
+        /**
+         * Loads the action definition from its toolbar name.
+         * @param actionName action toolbar name
+         * @return action definition or null
+         */
         public ActionDefinition loadAction(String actionName) {
             index = 0;
             this.s = actionName.toCharArray();
@@ -259,6 +273,16 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
             String name = readTillChar('(', '{');
             Action action = actions.get(name);
 
+            if (action == null && name.startsWith(IMAGERY_PREFIX)) {
+                String imageryName = name.substring(IMAGERY_PREFIX.length());
+                for (ImageryInfo i : ImageryLayerInfo.instance.getDefaultLayers()) {
+                    if (imageryName.equalsIgnoreCase(i.getName())) {
+                        action = new AddImageryLayerAction(i);
+                        break;
+                    }
+                }
+            }
+
             if (action == null)
                 return null;
 
@@ -938,6 +962,7 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
             for (ActionDefinition actionDefinition: getDefinedActions()) {
                 selected.addElement(actionDefinition);
             }
+            actionsTreeModel.reload();
         }
 
         @Override
@@ -1005,7 +1030,7 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
                     } else {
                         String toolbar = (String) tb;
                         Action r = actions.get(toolbar);
-                        if (r != null && r != action && !toolbar.startsWith("imagery_")) {
+                        if (r != null && r != action && !toolbar.startsWith(IMAGERY_PREFIX)) {
                             Main.info(tr("Toolbar action {0} overwritten: {1} gets {2}",
                             toolbar, r.getClass().getName(), action.getClass().getName()));
                         }
@@ -1076,6 +1101,7 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
     }
 
     /**
+     * Registers an action to the toolbar preferences.
      * @param action Action to register
      * @return The parameter (for better chaining)
      */
@@ -1098,6 +1124,20 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
     }
 
     /**
+     * Unregisters an action from the toolbar preferences.
+     * @param action Action to unregister
+     * @return The removed action, or null
+     * @since 11654
+     */
+    public Action unregister(Action action) {
+        Object toolbar = action.getValue("toolbar");
+        if (toolbar instanceof String) {
+            return regactions.remove(toolbar);
+        }
+        return null;
+    }
+
+    /**
      * Parse the toolbar preference setting and construct the toolbar GUI control.
      *
      * Call this, if anything has changed in the toolbar settings and you want to refresh
diff --git a/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java b/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java
index 0991668..aa7efc7 100644
--- a/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java
@@ -36,7 +36,6 @@ import org.openstreetmap.josm.gui.MapScaler;
 import org.openstreetmap.josm.gui.MapStatus;
 import org.openstreetmap.josm.gui.conflict.ConflictColors;
 import org.openstreetmap.josm.gui.dialogs.ConflictDialog;
-import org.openstreetmap.josm.gui.layer.ImageryLayer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.layer.gpx.GpxDrawHelper;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
@@ -262,7 +261,6 @@ public class ColorPreference implements SubPreferenceSetting {
         MarkerLayer.getGenericColor();
         GpxDrawHelper.getGenericColor();
         OsmDataLayer.getOutsideColor();
-        ImageryLayer.getFadeColor();
         MapScaler.getColor();
         MapStatus.getColors();
         ConflictDialog.getColor();
diff --git a/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java b/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java
index 0729d89..8c1dd34 100644
--- a/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java
@@ -25,6 +25,7 @@ import javax.swing.UIManager.LookAndFeelInfo;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
+import org.openstreetmap.josm.data.preferences.StringProperty;
 import org.openstreetmap.josm.gui.MapMover;
 import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
@@ -44,6 +45,12 @@ import org.openstreetmap.josm.tools.date.DateUtils;
  */
 public class LafPreference implements SubPreferenceSetting {
 
+    /**
+     * Look-and-feel property.
+     * @since 11713
+     */
+    public static final StringProperty LAF = new StringProperty("laf", Main.platform.getDefaultStyle());
+
     static final class LafListCellRenderer implements ListCellRenderer<LookAndFeelInfo> {
         private final DefaultListCellRenderer def = new DefaultListCellRenderer();
 
@@ -99,7 +106,7 @@ public class LafPreference implements SubPreferenceSetting {
             }
         }
 
-        String laf = Main.pref.get("laf", Main.platform.getDefaultStyle());
+        String laf = LAF.get();
         for (int i = 0; i < lafCombo.getItemCount(); ++i) {
             if (lafCombo.getItemAt(i).getClassName().equals(laf)) {
                 lafCombo.setSelectedIndex(i);
@@ -202,7 +209,7 @@ public class LafPreference implements SubPreferenceSetting {
         MapMover.PROP_ZOOM_REVERSE_WHEEL.put(zoomReverseWheel.isSelected());
         NavigatableComponent.PROP_ZOOM_INTERMEDIATE_STEPS.put(zoomIntermediateSteps.isSelected());
         NavigatableComponent.PROP_ZOOM_RATIO.put(Math.pow(2, 1/(double) spinZoomRatio.getModel().getValue()));
-        mod |= Main.pref.put("laf", ((LookAndFeelInfo) lafCombo.getSelectedItem()).getClassName());
+        mod |= LAF.put(((LookAndFeelInfo) lafCombo.getSelectedItem()).getClassName());
         return mod;
     }
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java b/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java
index 2ef9cd9..c2e2942 100644
--- a/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java
@@ -88,16 +88,16 @@ public class AddWMSLayerPanel extends AddImageryPanel {
             } catch (WMSImagery.WMSGetCapabilitiesException ex3) {
                 String incomingData = ex3.getIncomingData().trim();
                 String title = tr("WMS Error");
-                String message = tr("Could not parse WMS layer list.");
+                StringBuilder message = new StringBuilder(tr("Could not parse WMS layer list."));
                 Main.error(ex3, "Could not parse WMS layer list. Incoming data:\n"+incomingData);
                 if ((incomingData.startsWith("<html>") || incomingData.startsWith("<HTML>"))
                   && (incomingData.endsWith("</html>") || incomingData.endsWith("</HTML>"))) {
-                    GuiHelper.notifyUserHtmlError(this, title, message, incomingData);
+                    GuiHelper.notifyUserHtmlError(this, title, message.toString(), incomingData);
                 } else {
                     if (ex3.getMessage() != null) {
-                        message += '\n' + ex3.getMessage();
+                        message.append('\n').append(ex3.getMessage());
                     }
-                    JOptionPane.showMessageDialog(getParent(), message, title, JOptionPane.ERROR_MESSAGE);
+                    JOptionPane.showMessageDialog(getParent(), message.toString(), title, JOptionPane.ERROR_MESSAGE);
                 }
             }
         });
diff --git a/src/org/openstreetmap/josm/gui/preferences/imagery/CommonSettingsPanel.java b/src/org/openstreetmap/josm/gui/preferences/imagery/CommonSettingsPanel.java
index 572f298..f30f46d 100644
--- a/src/org/openstreetmap/josm/gui/preferences/imagery/CommonSettingsPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/imagery/CommonSettingsPanel.java
@@ -3,15 +3,11 @@ package org.openstreetmap.josm.gui.preferences.imagery;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.awt.Color;
 import java.awt.GridBagLayout;
 import java.io.File;
 import java.io.FilenameFilter;
 
-import javax.swing.JButton;
-import javax.swing.JColorChooser;
 import javax.swing.JLabel;
-import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JSlider;
 import javax.swing.JSpinner;
@@ -24,7 +20,6 @@ import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
-import org.openstreetmap.josm.tools.ColorHelper;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -35,10 +30,8 @@ import org.openstreetmap.josm.tools.Utils;
 public class CommonSettingsPanel extends JPanel {
 
     // Common Settings
-    private final JButton btnFadeColor;
-    private final JSlider fadeAmount = new JSlider(0, 100);
     private final JosmComboBox<String> sharpen;
-    private final JosmTextField tilecacheDir = new JosmTextField();
+    private final JosmTextField tilecacheDir = new JosmTextField(11);
     private final JSpinner maxElementsOnDisk;
     private final JSlider tilesZoom = new JSlider(-2, 2, 0);
 
@@ -52,29 +45,6 @@ public class CommonSettingsPanel extends JPanel {
         this.maxElementsOnDisk = new JSpinner(new SpinnerNumberModel(
                 AbstractCachedTileSourceLayer.MAX_DISK_CACHE_SIZE.get().intValue(), 0, Integer.MAX_VALUE, 1));
 
-        this.btnFadeColor = new JButton();
-        this.btnFadeColor.addActionListener(e -> {
-            JColorChooser chooser = new JColorChooser(btnFadeColor.getBackground());
-            int answer = JOptionPane.showConfirmDialog(
-                    this, chooser,
-                    tr("Choose a color for {0}", tr("imagery fade")),
-                    JOptionPane.OK_CANCEL_OPTION,
-                    JOptionPane.PLAIN_MESSAGE);
-            if (answer == JOptionPane.OK_OPTION) {
-                Color colFadeColor = chooser.getColor();
-                btnFadeColor.setBackground(colFadeColor);
-                btnFadeColor.setText(ColorHelper.color2html(colFadeColor));
-            }
-        });
-
-        add(new JLabel(tr("Fade Color: ")), GBC.std());
-        add(GBC.glue(5, 0), GBC.std().fill(GBC.HORIZONTAL));
-        add(this.btnFadeColor, GBC.eol().fill(GBC.HORIZONTAL));
-
-        add(new JLabel(tr("Fade amount: ")), GBC.std());
-        add(GBC.glue(5, 0), GBC.std().fill(GBC.HORIZONTAL));
-        add(this.fadeAmount, GBC.eol().fill(GBC.HORIZONTAL));
-
         this.sharpen = new JosmComboBox<>(new String[] {
                 tr("None"),
                 tr("Soft"),
@@ -104,11 +74,7 @@ public class CommonSettingsPanel extends JPanel {
      * Loads the common settings.
      */
     public void loadSettings() {
-        Color colFadeColor = ImageryLayer.PROP_FADE_COLOR.get();
-        this.btnFadeColor.setBackground(colFadeColor);
-        this.btnFadeColor.setText(ColorHelper.color2html(colFadeColor));
-        this.fadeAmount.setValue(ImageryLayer.PROP_FADE_AMOUNT.get());
-        this.sharpen.setSelectedIndex(Math.max(0, Math.min(2, ImageryLayer.PROP_SHARPEN_LEVEL.get())));
+        this.sharpen.setSelectedIndex(Utils.clamp(ImageryLayer.PROP_SHARPEN_LEVEL.get(), 0, 2));
         this.tilecacheDir.setText(CachedTileLoaderFactory.PROP_TILECACHE_DIR.get());
         this.maxElementsOnDisk.setValue(AbstractCachedTileSourceLayer.MAX_DISK_CACHE_SIZE.get());
         this.tilesZoom.setValue(AbstractTileSourceLayer.ZOOM_OFFSET.get());
@@ -119,8 +85,6 @@ public class CommonSettingsPanel extends JPanel {
      * @return true when restart is required
      */
     public boolean saveSettings() {
-        ImageryLayer.PROP_FADE_AMOUNT.put(this.fadeAmount.getValue());
-        ImageryLayer.PROP_FADE_COLOR.put(this.btnFadeColor.getBackground());
         ImageryLayer.PROP_SHARPEN_LEVEL.put(sharpen.getSelectedIndex());
 
         boolean restartRequired = false;
@@ -149,7 +113,7 @@ public class CommonSettingsPanel extends JPanel {
         return restartRequired;
     }
 
-    private void removeCacheFiles(String path) {
+    private static void removeCacheFiles(String path) {
         File directory = new File(path);
         File[] cacheFiles = directory.listFiles((FilenameFilter) (dir, name) -> name.endsWith(".data") || name.endsWith(".key"));
         JCSCacheManager.shutdown(); // shutdown Cache - so files can by safely deleted
diff --git a/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java b/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java
index a425cc5..3f946e5 100644
--- a/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java
@@ -805,7 +805,6 @@ public final class ImageryPreference extends DefaultTabPreferenceSetting {
     }
 
     static class OffsetBookmarksPanel extends JPanel {
-        private final transient List<OffsetBookmark> bookmarks = OffsetBookmark.allBookmarks;
         private final OffsetsBookmarksModel model = new OffsetsBookmarksModel();
 
         /**
@@ -857,7 +856,7 @@ public final class ImageryPreference extends DefaultTabPreferenceSetting {
         /**
          * The table model for imagery offsets list
          */
-        private class OffsetsBookmarksModel extends DefaultTableModel {
+        private static class OffsetsBookmarksModel extends DefaultTableModel {
 
             /**
              * Constructs a new {@code OffsetsBookmarksModel}.
@@ -866,30 +865,30 @@ public final class ImageryPreference extends DefaultTabPreferenceSetting {
                 setColumnIdentifiers(new String[] {tr("Projection"), tr("Layer"), tr("Name"), tr("Easting"), tr("Northing")});
             }
 
-            private OffsetBookmark getRow(int row) {
-                return bookmarks.get(row);
+            private static OffsetBookmark getRow(int row) {
+                return OffsetBookmark.getBookmarkByIndex(row);
             }
 
             private void addRow(OffsetBookmark i) {
-                bookmarks.add(i);
+                OffsetBookmark.addBookmark(i);
                 int p = getRowCount() - 1;
                 fireTableRowsInserted(p, p);
             }
 
             @Override
             public void removeRow(int i) {
-                bookmarks.remove(getRow(i));
+                OffsetBookmark.removeBookmark(getRow(i));
                 fireTableRowsDeleted(i, i);
             }
 
             @Override
             public int getRowCount() {
-                return bookmarks.size();
+                return OffsetBookmark.getBookmarksSize();
             }
 
             @Override
             public Object getValueAt(int row, int column) {
-                OffsetBookmark info = bookmarks.get(row);
+                OffsetBookmark info = OffsetBookmark.getBookmarkByIndex(row);
                 switch (column) {
                 case 0:
                     if (info.projectionCode == null) return "";
@@ -909,7 +908,7 @@ public final class ImageryPreference extends DefaultTabPreferenceSetting {
 
             @Override
             public void setValueAt(Object o, int row, int column) {
-                OffsetBookmark info = bookmarks.get(row);
+                OffsetBookmark info = OffsetBookmark.getBookmarkByIndex(row);
                 switch (column) {
                 case 1:
                     info.layerName = o.toString();
@@ -939,7 +938,7 @@ public final class ImageryPreference extends DefaultTabPreferenceSetting {
      * Initializes imagery preferences.
      */
     public static void initialize() {
-        ImageryLayerInfo.instance.load(true);
+        ImageryLayerInfo.instance.load(false);
         OffsetBookmark.loadBookmarks();
         Main.main.menu.imageryMenu.refreshImageryMenu();
         Main.main.menu.imageryMenu.refreshOffsetMenu();
diff --git a/src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java b/src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java
index cc918a6..36a94bb 100644
--- a/src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java
@@ -164,7 +164,7 @@ public class MapPaintPreference implements SubPreferenceSetting {
             if (css.title != null && !css.title.isEmpty()) {
                 return css.title;
             }
-        } catch (RuntimeException ignore) {
+        } catch (RuntimeException ignore) { // NOPMD
             Main.debug(ignore);
         }
         return null;
diff --git a/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java b/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java
index 4f4871f..e47c331 100644
--- a/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java
+++ b/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java
@@ -25,6 +25,10 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
     public interface ProgressMonitorDialog {
         void setVisible(boolean visible);
 
+        /**
+         * Updates the progress value to the specified progress.
+         * @param progress The progress as integer. Between 0 and {@link PleaseWaitProgressMonitor#PROGRESS_BAR_MAX}
+         */
         void updateProgress(int progress);
 
         void setCustomText(String text);
@@ -37,6 +41,9 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
         void appendLogMessage(String message);
     }
 
+    /**
+     * The maximum value the progress bar that displays the current progress should have.
+     */
     public static final int PROGRESS_BAR_MAX = 10_000;
     private final Component dialogParent;
 
@@ -58,7 +65,7 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
         SwingUtilities.invokeLater(() -> {
             try {
                 runnable.run();
-            } catch (RuntimeException e) {
+            } catch (RuntimeException e) { // NOPMD
                 throw BugReport.intercept(e).put("monitor", this);
             }
         });
@@ -190,7 +197,7 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
             dialog.setInBackgroundCallback(inBackgroundListener);
             dialog.setCustomText("");
             dialog.addWindowListener(windowListener);
-            dialog.progress.setMaximum(PROGRESS_BAR_MAX);
+            dialog.setMaximumProgress(PROGRESS_BAR_MAX);
             dialog.setVisible(true);
         });
     }
diff --git a/src/org/openstreetmap/josm/gui/progress/ProgressMonitor.java b/src/org/openstreetmap/josm/gui/progress/ProgressMonitor.java
index 64c9a58..4ee5304 100644
--- a/src/org/openstreetmap/josm/gui/progress/ProgressMonitor.java
+++ b/src/org/openstreetmap/josm/gui/progress/ProgressMonitor.java
@@ -32,7 +32,7 @@ import java.awt.Component;
 public interface ProgressMonitor {
 
     @FunctionalInterface
-    public interface CancelListener {
+    interface CancelListener {
         void operationCanceled();
     }
 
diff --git a/src/org/openstreetmap/josm/gui/tagging/TagEditorModel.java b/src/org/openstreetmap/josm/gui/tagging/TagEditorModel.java
index 952f004..fab4955 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TagEditorModel.java
+++ b/src/org/openstreetmap/josm/gui/tagging/TagEditorModel.java
@@ -271,7 +271,7 @@ public class TagEditorModel extends AbstractTableModel {
      *
      * @param tagIndices a list of tag indices
      */
-    public void deleteTagNames(int ... tagIndices) {
+    public void deleteTagNames(int... tagIndices) {
         if (tags == null)
             return;
         commitPendingEdit();
@@ -290,7 +290,7 @@ public class TagEditorModel extends AbstractTableModel {
      *
      * @param tagIndices the lit of tag indices
      */
-    public void deleteTagValues(int ... tagIndices) {
+    public void deleteTagValues(int... tagIndices) {
         if (tags == null)
             return;
         commitPendingEdit();
@@ -333,7 +333,7 @@ public class TagEditorModel extends AbstractTableModel {
      *
      * @param tagIndices the list of tag indices
      */
-    public void deleteTags(int ... tagIndices) {
+    public void deleteTags(int... tagIndices) {
         if (tags == null)
             return;
         commitPendingEdit();
diff --git a/src/org/openstreetmap/josm/gui/tagging/TagTableColumnModelBuilder.java b/src/org/openstreetmap/josm/gui/tagging/TagTableColumnModelBuilder.java
index 0cb3935..e8416e8 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TagTableColumnModelBuilder.java
+++ b/src/org/openstreetmap/josm/gui/tagging/TagTableColumnModelBuilder.java
@@ -25,7 +25,7 @@ public class TagTableColumnModelBuilder {
      * @see TableColumn#setHeaderValue
      * @see TableColumn#setCellRenderer
      */
-    public TagTableColumnModelBuilder(TableCellRenderer renderer, String ... headerValues) {
+    public TagTableColumnModelBuilder(TableCellRenderer renderer, String... headerValues) {
         CheckParameterUtil.ensureParameterNotNull(headerValues, "headerValues");
         for (int i = 0; i < headerValues.length; i++) {
             TableColumn col = new TableColumn(i);
@@ -43,7 +43,7 @@ public class TagTableColumnModelBuilder {
      * @return {@code this}
      * @see TableColumn#setWidth
      */
-    public TagTableColumnModelBuilder setWidth(int width, int ... indexes) {
+    public TagTableColumnModelBuilder setWidth(int width, int... indexes) {
         for (int i : indexes) {
             model.getColumn(i).setWidth(width);
         }
@@ -57,7 +57,7 @@ public class TagTableColumnModelBuilder {
      * @return {@code this}
      * @see TableColumn#setPreferredWidth
      */
-    public TagTableColumnModelBuilder setPreferredWidth(int width, int ... indexes) {
+    public TagTableColumnModelBuilder setPreferredWidth(int width, int... indexes) {
         for (int i : indexes) {
             model.getColumn(i).setPreferredWidth(width);
         }
@@ -71,7 +71,7 @@ public class TagTableColumnModelBuilder {
      * @return {@code this}
      * @see TableColumn#setMaxWidth
      */
-    public TagTableColumnModelBuilder setMaxWidth(int width, int ... indexes) {
+    public TagTableColumnModelBuilder setMaxWidth(int width, int... indexes) {
         for (int i : indexes) {
             model.getColumn(i).setMaxWidth(width);
         }
@@ -85,7 +85,7 @@ public class TagTableColumnModelBuilder {
      * @return {@code this}
      * @see TableColumn#setCellEditor
      */
-    public TagTableColumnModelBuilder setCellEditor(TableCellEditor editor, int ... indexes) {
+    public TagTableColumnModelBuilder setCellEditor(TableCellEditor editor, int... indexes) {
         for (int i : indexes) {
             model.getColumn(i).setCellEditor(editor);
         }
diff --git a/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionManager.java b/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionManager.java
index e0b2b88..0ba1707 100644
--- a/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionManager.java
+++ b/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionManager.java
@@ -14,7 +14,6 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.function.Function;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
@@ -218,11 +217,7 @@ public class AutoCompletionManager implements DataSetListener {
         if (item instanceof KeyedItem) {
             KeyedItem ki = (KeyedItem) item;
             if (ki.key != null && ki.getValues() != null) {
-                try {
-                    PRESET_TAG_CACHE.putAll(ki.key, ki.getValues());
-                } catch (NullPointerException e) {
-                    Main.error(e, p + ": Unable to cache " + ki);
-                }
+                PRESET_TAG_CACHE.putAll(ki.key, ki.getValues());
             }
         } else if (item instanceof Roles) {
             Roles r = (Roles) item;
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java
index 55f50da..855624d 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java
@@ -124,7 +124,7 @@ public class TaggingPresetSelector extends SearchTextResultListPanel<TaggingPres
             }
         }
 
-        private static int isMatching(Collection<String> values, String ... searchString) {
+        private static int isMatching(Collection<String> values, String... searchString) {
             int sum = 0;
             for (String word: searchString) {
                 boolean found = false;
@@ -148,15 +148,15 @@ public class TaggingPresetSelector extends SearchTextResultListPanel<TaggingPres
             return sum;
         }
 
-        int isMatchingGroup(String ... words) {
+        int isMatchingGroup(String... words) {
             return isMatching(groups, words);
         }
 
-        int isMatchingName(String ... words) {
+        int isMatchingName(String... words) {
             return isMatching(names, words);
         }
 
-        int isMatchingTags(String ... words) {
+        int isMatchingTags(String... words) {
             return isMatching(tags, words);
         }
 
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java
index a575b47..dbad0ab 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java
@@ -157,7 +157,7 @@ public abstract class ComboMultiSelect extends KeyedItem {
     protected static class ConcatenatingJList extends JList<PresetListEntry> {
         private final String delimiter;
 
-        protected ConcatenatingJList(String del, PresetListEntry ... o) {
+        protected ConcatenatingJList(String del, PresetListEntry... o) {
             super(o);
             delimiter = del;
         }
diff --git a/src/org/openstreetmap/josm/gui/util/GuiHelper.java b/src/org/openstreetmap/josm/gui/util/GuiHelper.java
index 5437e58..021f4c2 100644
--- a/src/org/openstreetmap/josm/gui/util/GuiHelper.java
+++ b/src/org/openstreetmap/josm/gui/util/GuiHelper.java
@@ -158,7 +158,7 @@ public final class GuiHelper {
         if (SwingUtilities.isEventDispatchThread()) {
             try {
                 return callable.call();
-            } catch (Exception e) {
+            } catch (Exception e) { // NOPMD
                 Main.error(e);
                 return null;
             }
diff --git a/src/org/openstreetmap/josm/gui/util/RotationAngle.java b/src/org/openstreetmap/josm/gui/util/RotationAngle.java
index 94623a7..0419956 100644
--- a/src/org/openstreetmap/josm/gui/util/RotationAngle.java
+++ b/src/org/openstreetmap/josm/gui/util/RotationAngle.java
@@ -19,6 +19,110 @@ import org.openstreetmap.josm.tools.Utils;
 public interface RotationAngle {
 
     /**
+     * The rotation along a way.
+     */
+    final class WayDirectionRotationAngle implements RotationAngle {
+        @Override
+        public double getRotationAngle(OsmPrimitive p) {
+            if (!(p instanceof Node)) {
+                return 0;
+            }
+            final Node n = (Node) p;
+            final SubclassFilteredCollection<OsmPrimitive, Way> ways = Utils.filteredCollection(n.getReferrers(), Way.class);
+            if (ways.isEmpty()) {
+                return 0;
+            }
+            final Way w = ways.iterator().next();
+            final int idx = w.getNodes().indexOf(n);
+            if (idx == 0) {
+                return -Geometry.getSegmentAngle(n.getEastNorth(), w.getNode(idx + 1).getEastNorth());
+            } else {
+                return -Geometry.getSegmentAngle(w.getNode(idx - 1).getEastNorth(), n.getEastNorth());
+            }
+        }
+
+        @Override
+        public String toString() {
+            return "way-direction";
+        }
+
+        @Override
+        public int hashCode() {
+            return 1;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (this == obj) {
+                return true;
+            }
+            if (obj == null) {
+                return false;
+            }
+            if (getClass() != obj.getClass()) {
+                return false;
+            }
+            return true;
+        }
+
+    }
+
+    /**
+     * A static rotation
+     */
+    final class StaticRotationAngle implements RotationAngle {
+        private final double angle;
+
+        private StaticRotationAngle(double angle) {
+            this.angle = angle;
+        }
+
+        @Override
+        public double getRotationAngle(OsmPrimitive p) {
+            return angle;
+        }
+
+        @Override
+        public String toString() {
+            return angle + "rad";
+        }
+
+        @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            long temp;
+            temp = Double.doubleToLongBits(angle);
+            result = prime * result + (int) (temp ^ (temp >>> 32));
+            return result;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (this == obj) {
+                return true;
+            }
+            if (obj == null) {
+                return false;
+            }
+            if (getClass() != obj.getClass()) {
+                return false;
+            }
+            StaticRotationAngle other = (StaticRotationAngle) obj;
+            if (Double.doubleToLongBits(angle) != Double.doubleToLongBits(other.angle)) {
+                return false;
+            }
+            return true;
+        }
+    }
+
+    /**
+     * A no-rotation angle that always returns 0.
+     * @since 11726
+     */
+    RotationAngle NO_ROTATION = new StaticRotationAngle(0);
+
+    /**
      * Calculates the rotation angle depending on the primitive to be displayed.
      * @param p primitive
      * @return rotation angle
@@ -31,17 +135,7 @@ public interface RotationAngle {
      * @return rotation angle
      */
     static RotationAngle buildStaticRotation(final double angle) {
-        return new RotationAngle() {
-            @Override
-            public double getRotationAngle(OsmPrimitive p) {
-                return angle;
-            }
-
-            @Override
-            public String toString() {
-                return angle + "rad";
-            }
-        };
+        return new StaticRotationAngle(angle);
     }
 
     /**
@@ -101,30 +195,6 @@ public interface RotationAngle {
      * @return rotation angle
      */
     static RotationAngle buildWayDirectionRotation() {
-        return new RotationAngle() {
-            @Override
-            public double getRotationAngle(OsmPrimitive p) {
-                if (!(p instanceof Node)) {
-                    return 0;
-                }
-                final Node n = (Node) p;
-                final SubclassFilteredCollection<OsmPrimitive, Way> ways = Utils.filteredCollection(n.getReferrers(), Way.class);
-                if (ways.isEmpty()) {
-                    return 0;
-                }
-                final Way w = ways.iterator().next();
-                final int idx = w.getNodes().indexOf(n);
-                if (idx == 0) {
-                    return -Geometry.getSegmentAngle(n.getEastNorth(), w.getNode(idx + 1).getEastNorth());
-                } else {
-                    return -Geometry.getSegmentAngle(w.getNode(idx - 1).getEastNorth(), n.getEastNorth());
-                }
-            }
-
-            @Override
-            public String toString() {
-                return "way-direction";
-            }
-        };
+        return new WayDirectionRotationAngle();
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/widgets/AutoAdjustingSplitPane.java b/src/org/openstreetmap/josm/gui/widgets/AutoAdjustingSplitPane.java
new file mode 100644
index 0000000..b8d4507
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/widgets/AutoAdjustingSplitPane.java
@@ -0,0 +1,47 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.widgets;
+
+import java.awt.event.HierarchyBoundsListener;
+import java.awt.event.HierarchyEvent;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JSplitPane;
+
+/**
+ * Auto adjusting split pane when parent is resized.
+ * @since 11772 (extracted from {@code CombinePrimitiveResolverDialog})
+ */
+public class AutoAdjustingSplitPane extends JSplitPane implements PropertyChangeListener, HierarchyBoundsListener {
+    private double dividerLocation;
+
+    /**
+     * Constructs a new {@code AutoAdjustingSplitPane}.
+     * @param newOrientation {@code JSplitPane.HORIZONTAL_SPLIT} or {@code JSplitPane.VERTICAL_SPLIT}
+     */
+    public AutoAdjustingSplitPane(int newOrientation) {
+        super(newOrientation);
+        addPropertyChangeListener(JSplitPane.DIVIDER_LOCATION_PROPERTY, this);
+        addHierarchyBoundsListener(this);
+    }
+
+    @Override
+    public void ancestorResized(HierarchyEvent e) {
+        setDividerLocation((int) (dividerLocation * getHeight()));
+    }
+
+    @Override
+    public void ancestorMoved(HierarchyEvent e) {
+        // do nothing
+    }
+
+    @Override
+    public void propertyChange(PropertyChangeEvent evt) {
+        if (JSplitPane.DIVIDER_LOCATION_PROPERTY.equals(evt.getPropertyName())) {
+            int newVal = (Integer) evt.getNewValue();
+            if (getHeight() != 0) {
+                dividerLocation = (double) newVal / (double) getHeight();
+            }
+        }
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/widgets/JosmPasswordField.java b/src/org/openstreetmap/josm/gui/widgets/JosmPasswordField.java
index c87db3b..36f1166 100644
--- a/src/org/openstreetmap/josm/gui/widgets/JosmPasswordField.java
+++ b/src/org/openstreetmap/josm/gui/widgets/JosmPasswordField.java
@@ -124,7 +124,7 @@ public class JosmPasswordField extends JPasswordField implements FocusListener {
                 public void actionPerformed(ActionEvent e) {
                     try {
                         pasteAction.actionPerformed(e);
-                    } catch (NullPointerException npe) {
+                    } catch (NullPointerException npe) { // NOPMD
                         Main.error(npe, "NullPointerException occured because of JDK bug 6322854. "
                                 +"Copy/Paste operation has not been performed. Please complain to Oracle: "+
                                 "https://bugs.openjdk.java.net/browse/JDK-6322854");
diff --git a/src/org/openstreetmap/josm/gui/widgets/JosmTextField.java b/src/org/openstreetmap/josm/gui/widgets/JosmTextField.java
index 592dd44..f14625c 100644
--- a/src/org/openstreetmap/josm/gui/widgets/JosmTextField.java
+++ b/src/org/openstreetmap/josm/gui/widgets/JosmTextField.java
@@ -150,7 +150,10 @@ public class JosmTextField extends JTextField implements FocusListener {
         if (hint != null && !hint.isEmpty() && getText().isEmpty() && !isFocusOwner()) {
             // Taken from http://stackoverflow.com/a/24571681/2257172
             int h = getHeight();
-            ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
+            if (g instanceof Graphics2D) {
+                ((Graphics2D) g).setRenderingHint(
+                        RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
+            }
             Insets ins = getInsets();
             FontMetrics fm = g.getFontMetrics();
             int c0 = getBackground().getRGB();
diff --git a/src/org/openstreetmap/josm/gui/widgets/ListPopupMenu.java b/src/org/openstreetmap/josm/gui/widgets/ListPopupMenu.java
index ff88c49..4e71ef8 100644
--- a/src/org/openstreetmap/josm/gui/widgets/ListPopupMenu.java
+++ b/src/org/openstreetmap/josm/gui/widgets/ListPopupMenu.java
@@ -15,7 +15,7 @@ public class ListPopupMenu extends JPopupMenu {
 
     private final JList<?>[] lists;
 
-    public ListPopupMenu(JList<?> ... lists) {
+    public ListPopupMenu(JList<?>... lists) {
         this.lists = lists;
     }
 
diff --git a/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java b/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java
index 7cbbd0c..efa71fd 100644
--- a/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java
+++ b/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java
@@ -157,7 +157,7 @@ public class MultiSplitPane extends JPanel {
     private class DefaultDividerPainter implements DividerPainter {
         @Override
         public void paint(Graphics g, Divider divider) {
-            if ((divider == activeDivider()) && !isContinuousLayout()) {
+            if (g instanceof Graphics2D && divider == activeDivider() && !isContinuousLayout()) {
                 Graphics2D g2d = (Graphics2D) g;
                 g2d.setColor(Color.black);
                 g2d.fill(divider.getBounds());
diff --git a/src/org/openstreetmap/josm/gui/widgets/QuadStateCheckBox.java b/src/org/openstreetmap/josm/gui/widgets/QuadStateCheckBox.java
index 1a0b4c3..0c84d53 100644
--- a/src/org/openstreetmap/josm/gui/widgets/QuadStateCheckBox.java
+++ b/src/org/openstreetmap/josm/gui/widgets/QuadStateCheckBox.java
@@ -52,7 +52,7 @@ public class QuadStateCheckBox extends JCheckBox {
      * @param initial The initial state
      * @param allowed The allowed states
      */
-    public QuadStateCheckBox(String text, Icon icon, State initial, State ... allowed) {
+    public QuadStateCheckBox(String text, Icon icon, State initial, State... allowed) {
         super(text, icon);
         this.allowed = Utils.copyArray(allowed);
         // Add a listener for when the mouse is pressed
@@ -85,7 +85,7 @@ public class QuadStateCheckBox extends JCheckBox {
      * @param initial The initial state
      * @param allowed The allowed states
      */
-    public QuadStateCheckBox(String text, State initial, State ... allowed) {
+    public QuadStateCheckBox(String text, State initial, State... allowed) {
         this(text, null, initial, allowed);
     }
 
diff --git a/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java b/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java
index 04fbfe2..bfd4aac 100644
--- a/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java
+++ b/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java
@@ -16,6 +16,7 @@ import org.openstreetmap.josm.data.notes.Note;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.xml.sax.SAXException;
 
 /**
@@ -113,7 +114,7 @@ public class BoundingBoxDownloader extends OsmServerReader {
             throw new OsmTransferException(e);
         } catch (OsmTransferException e) {
             throw e;
-        } catch (RuntimeException e) {
+        } catch (JosmRuntimeException | IllegalStateException e) {
             if (cancel)
                 return null;
             throw e;
diff --git a/src/org/openstreetmap/josm/io/GpxReader.java b/src/org/openstreetmap/josm/io/GpxReader.java
index 4d945e4..3a8f8d3 100644
--- a/src/org/openstreetmap/josm/io/GpxReader.java
+++ b/src/org/openstreetmap/josm/io/GpxReader.java
@@ -338,8 +338,8 @@ public class GpxReader implements GpxConstants {
                             data.put(META_EXTENSIONS, currentExtensions);
                         }
                         currentState = states.pop();
-                        break;
                     }
+                    break;
                 case "bounds":
                     // do nothing, has been parsed on startElement
                     break;
diff --git a/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java b/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
index ac1b014..76cbb6b 100644
--- a/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
+++ b/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
@@ -210,13 +210,12 @@ public class MultiFetchServerObjectReader extends OsmServerReader {
      * @return this
      */
     public MultiFetchServerObjectReader append(OsmPrimitive primitive) {
-        if (primitive != null) {
-            switch (OsmPrimitiveType.from(primitive)) {
-                case NODE: return appendNode((Node) primitive);
-                case WAY: return appendWay((Way) primitive);
-                case RELATION: return appendRelation((Relation) primitive);
-                default: break;
-            }
+        if (primitive instanceof Node) {
+            return appendNode((Node) primitive);
+        } else if (primitive instanceof Way) {
+            return appendWay((Way) primitive);
+        } else if (primitive instanceof Relation) {
+            return appendRelation((Relation) primitive);
         }
         return this;
     }
@@ -322,7 +321,7 @@ public class MultiFetchServerObjectReader extends OsmServerReader {
         // Build a list of fetchers that will  download smaller sets containing only MAX_IDS_PER_REQUEST (200) primitives each.
         // we will run up to MAX_DOWNLOAD_THREADS concurrent fetchers.
         int threadsNumber = Main.pref.getInteger("osm.download.threads", OsmApi.MAX_DOWNLOAD_THREADS);
-        threadsNumber = Math.min(Math.max(threadsNumber, 1), OsmApi.MAX_DOWNLOAD_THREADS);
+        threadsNumber = Utils.clamp(threadsNumber, 1, OsmApi.MAX_DOWNLOAD_THREADS);
         final ExecutorService exec = Executors.newFixedThreadPool(
                 threadsNumber, Utils.newThreadFactory(getClass() + "-%d", Thread.NORM_PRIORITY));
         CompletionService<FetchResult> ecs = new ExecutorCompletionService<>(exec);
diff --git a/src/org/openstreetmap/josm/io/NameFinder.java b/src/org/openstreetmap/josm/io/NameFinder.java
index 7e84529..63bf42b 100644
--- a/src/org/openstreetmap/josm/io/NameFinder.java
+++ b/src/org/openstreetmap/josm/io/NameFinder.java
@@ -240,7 +240,7 @@ public final class NameFinder {
             } catch (NumberFormatException ex) {
                 Main.error(ex); // SAXException does not chain correctly
                 throw new SAXException(ex.getMessage(), ex);
-            } catch (NullPointerException ex) {
+            } catch (NullPointerException ex) { // NOPMD
                 Main.error(ex); // SAXException does not chain correctly
                 throw new SAXException(tr("Null pointer exception, possibly some missing tags."), ex);
             }
diff --git a/src/org/openstreetmap/josm/io/NmeaReader.java b/src/org/openstreetmap/josm/io/NmeaReader.java
index f569d5b..6ed05f1 100644
--- a/src/org/openstreetmap/josm/io/NmeaReader.java
+++ b/src/org/openstreetmap/josm/io/NmeaReader.java
@@ -414,7 +414,7 @@ public class NmeaReader {
             }
             return true;
 
-        } catch (RuntimeException ex) {
+        } catch (IllegalArgumentException | IndexOutOfBoundsException | IllegalDataException ex) {
             // out of bounds and such
             Main.debug(ex);
             ps.malformed++;
diff --git a/src/org/openstreetmap/josm/io/OsmExporter.java b/src/org/openstreetmap/josm/io/OsmExporter.java
index d3fcd8e..ee87f4c 100644
--- a/src/org/openstreetmap/josm/io/OsmExporter.java
+++ b/src/org/openstreetmap/josm/io/OsmExporter.java
@@ -63,15 +63,11 @@ public class OsmExporter extends FileExporter {
      * @throws IllegalArgumentException if {@code layer} is not an instance of {@code OsmDataLayer}
      */
     public void exportData(File file, Layer layer, boolean noBackup) {
-        checkOsmDataLayer(layer);
-        save(file, (OsmDataLayer) layer, noBackup);
-    }
-
-    protected static void checkOsmDataLayer(Layer layer) {
         if (!(layer instanceof OsmDataLayer)) {
-            throw new IllegalArgumentException(MessageFormat.format("Expected instance of OsmDataLayer. Got ''{0}''.", layer
-                    .getClass().getName()));
+            throw new IllegalArgumentException(
+                    MessageFormat.format("Expected instance of OsmDataLayer. Got ''{0}''.", layer.getClass().getName()));
         }
+        save(file, (OsmDataLayer) layer, noBackup);
     }
 
     protected static OutputStream getOutputStream(File file) throws IOException {
diff --git a/src/org/openstreetmap/josm/io/OsmReader.java b/src/org/openstreetmap/josm/io/OsmReader.java
index 6bb702a..890b108 100644
--- a/src/org/openstreetmap/josm/io/OsmReader.java
+++ b/src/org/openstreetmap/josm/io/OsmReader.java
@@ -27,6 +27,7 @@ import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.AbstractPrimitive;
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.DataSet.UploadPolicy;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.NodeData;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
@@ -138,7 +139,12 @@ public class OsmReader extends AbstractReader {
         ds.setVersion(v);
         String upload = parser.getAttributeValue(null, "upload");
         if (upload != null) {
-            ds.setUploadDiscouraged(!Boolean.parseBoolean(upload));
+            for (UploadPolicy policy : UploadPolicy.values()) {
+                if (policy.getXmlFlag().equalsIgnoreCase(upload)) {
+                    ds.setUploadPolicy(policy);
+                    break;
+                }
+            }
         }
         String generator = parser.getAttributeValue(null, "generator");
         Long uploadChangesetId = null;
diff --git a/src/org/openstreetmap/josm/io/OsmWriter.java b/src/org/openstreetmap/josm/io/OsmWriter.java
index 355d856..d9ddcc5 100644
--- a/src/org/openstreetmap/josm/io/OsmWriter.java
+++ b/src/org/openstreetmap/josm/io/OsmWriter.java
@@ -16,6 +16,7 @@ import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.AbstractPrimitive;
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.DataSet.UploadPolicy;
 import org.openstreetmap.josm.data.osm.INode;
 import org.openstreetmap.josm.data.osm.IPrimitive;
 import org.openstreetmap.josm.data.osm.IRelation;
@@ -74,16 +75,16 @@ public class OsmWriter extends XmlWriter implements PrimitiveVisitor {
     }
 
     public void header() {
-        header(null);
+        header(UploadPolicy.NORMAL);
     }
 
-    public void header(Boolean upload) {
+    public void header(UploadPolicy upload) {
         out.println("<?xml version='1.0' encoding='UTF-8'?>");
         out.print("<osm version='");
         out.print(version);
-        if (upload != null) {
+        if (upload != null && upload != UploadPolicy.NORMAL) {
             out.print("' upload='");
-            out.print(upload);
+            out.print(upload.getXmlFlag());
         }
         out.println("' generator='JOSM'>");
     }
@@ -113,7 +114,7 @@ public class OsmWriter extends XmlWriter implements PrimitiveVisitor {
     }
 
     public void writeLayer(OsmDataLayer layer) {
-        header(!layer.isUploadDiscouraged());
+        header(layer.data.getUploadPolicy());
         writeDataSources(layer.data);
         writeContent(layer.data);
         footer();
diff --git a/src/org/openstreetmap/josm/io/XmlStreamParsingException.java b/src/org/openstreetmap/josm/io/XmlStreamParsingException.java
index efc09b3..123b530 100644
--- a/src/org/openstreetmap/josm/io/XmlStreamParsingException.java
+++ b/src/org/openstreetmap/josm/io/XmlStreamParsingException.java
@@ -41,11 +41,12 @@ public class XmlStreamParsingException extends XMLStreamException {
         String msg = Optional.ofNullable(super.getMessage()).orElseGet(() -> getClass().getName());
         if (getLocation() == null)
             return msg;
-        msg += ' ' + tr("(at line {0}, column {1})", getLocation().getLineNumber(), getLocation().getColumnNumber());
+        StringBuilder sb = new StringBuilder(msg).append(' ')
+                .append(tr("(at line {0}, column {1})", getLocation().getLineNumber(), getLocation().getColumnNumber()));
         int offset = getLocation().getCharacterOffset();
         if (offset > -1) {
-            msg += ". "+ tr("{0} bytes have been read", offset);
+            sb.append(". ").append(tr("{0} bytes have been read", offset));
         }
-        return msg;
+        return sb.toString();
     }
 }
diff --git a/src/org/openstreetmap/josm/io/imagery/WMSImagery.java b/src/org/openstreetmap/josm/io/imagery/WMSImagery.java
index fb0fc13..db1a805 100644
--- a/src/org/openstreetmap/josm/io/imagery/WMSImagery.java
+++ b/src/org/openstreetmap/josm/io/imagery/WMSImagery.java
@@ -273,7 +273,7 @@ public class WMSImagery {
                 || isImageFormatSupported(format, "bmp");
     }
 
-    static boolean isImageFormatSupported(String format, String ... mimeFormats) {
+    static boolean isImageFormatSupported(String format, String... mimeFormats) {
         for (String mime : mimeFormats) {
             if (format.startsWith("image/" + mime)) {
                 return ImageIO.getImageReadersBySuffix(mimeFormats[0]).hasNext();
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/DNSName.java b/src/org/openstreetmap/josm/io/remotecontrol/DNSName.java
index a86c803..f8b26cb 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/DNSName.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/DNSName.java
@@ -202,6 +202,9 @@ public final class DNSName implements GeneralNameInterface {
         else if (inputName.getType() != NAME_DNS)
             constraintType = NAME_DIFF_TYPE;
         else {
+            if (!(inputName instanceof DNSName)) {
+                throw new IllegalArgumentException("inputName: " + inputName);
+            }
             String inName =
                 (((DNSName) inputName).getName()).toLowerCase(Locale.ENGLISH);
             String thisName = name.toLowerCase(Locale.ENGLISH);
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandler.java
index e303bca..7190516 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandler.java
@@ -46,7 +46,7 @@ public class ImportHandler extends RequestHandler.RawURLParseRequestHandler {
                     task.loadUrl(isLoadInNewLayer(), url.toExternalForm(), null);
                 }
             }
-        } catch (RuntimeException ex) {
+        } catch (RuntimeException ex) { // NOPMD
             Main.warn("RemoteControl: Error parsing import remote control request:");
             Main.error(ex);
             throw new RequestHandlerErrorException(ex);
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java
index 6cf8292..ac0d50d 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java
@@ -145,7 +145,7 @@ public class LoadAndZoomHandler extends RequestHandler {
                     }
                 }
             }
-        } catch (RuntimeException ex) {
+        } catch (RuntimeException ex) { // NOPMD
             Main.warn("RemoteControl: Error parsing load_and_zoom remote control request:");
             Main.error(ex);
             throw new RequestHandlerErrorException(ex);
diff --git a/src/org/openstreetmap/josm/io/session/SessionReader.java b/src/org/openstreetmap/josm/io/session/SessionReader.java
index 82842aa..e92cdc0 100644
--- a/src/org/openstreetmap/josm/io/session/SessionReader.java
+++ b/src/org/openstreetmap/josm/io/session/SessionReader.java
@@ -255,7 +255,7 @@ public class SessionReader {
                     }
                 } else
                     throw new IOException(tr("Unsupported scheme ''{0}'' in URI ''{1}''.", uri.getScheme(), uriStr));
-            } catch (URISyntaxException e) {
+            } catch (URISyntaxException | IllegalArgumentException e) {
                 throw new IOException(e);
             }
         }
diff --git a/src/org/openstreetmap/josm/io/session/SessionWriter.java b/src/org/openstreetmap/josm/io/session/SessionWriter.java
index f220938..b95cf8a 100644
--- a/src/org/openstreetmap/josm/io/session/SessionWriter.java
+++ b/src/org/openstreetmap/josm/io/session/SessionWriter.java
@@ -247,11 +247,15 @@ public class SessionWriter {
                 List<Integer> depsInt = new ArrayList<>();
                 for (Layer depLayer : deps) {
                     int depIndex = layers.indexOf(depLayer);
-                    if (depIndex == -1)
-                        throw new AssertionError();
-                    depsInt.add(depIndex+1);
+                    if (depIndex == -1) {
+                        Main.warn("Unable to find " + depLayer);
+                    } else {
+                        depsInt.add(depIndex+1);
+                    }
+                }
+                if (!depsInt.isEmpty()) {
+                    el.setAttribute("depends", Utils.join(",", depsInt));
                 }
-                el.setAttribute("depends", Utils.join(",", depsInt));
             }
             layersEl.appendChild(el);
         }
diff --git a/src/org/openstreetmap/josm/plugins/PluginHandler.java b/src/org/openstreetmap/josm/plugins/PluginHandler.java
index 7fead59..046a235 100644
--- a/src/org/openstreetmap/josm/plugins/PluginHandler.java
+++ b/src/org/openstreetmap/josm/plugins/PluginHandler.java
@@ -724,7 +724,7 @@ public final class PluginHandler {
                 msg = tr("<html>Could not load plugin {0} because the plugin<br>main class ''{1}'' was not found.<br>"
                         + "Delete from preferences?</html>", plugin.name, plugin.className);
             }
-        } catch (RuntimeException e) {
+        } catch (RuntimeException e) { // NOPMD
             pluginLoadingExceptions.put(plugin.name, e);
             Main.error(e);
         }
@@ -822,7 +822,7 @@ public final class PluginHandler {
             ReadLocalPluginInformationTask task = new ReadLocalPluginInformationTask(monitor);
             try {
                 task.run();
-            } catch (RuntimeException e) {
+            } catch (RuntimeException e) { // NOPMD
                 Main.error(e);
                 return null;
             }
@@ -1000,7 +1000,7 @@ public final class PluginHandler {
                     final Collection<String> pluginsWantedName = Utils.transform(pluginsWanted, piw -> piw.name);
                     plugins = SubclassFilteredCollection.filter(plugins, pi -> pluginsWantedName.contains(pi.name));
                 }
-            } catch (RuntimeException e) {
+            } catch (RuntimeException e) { // NOPMD
                 Main.warn(tr("Failed to download plugin information list"));
                 Main.error(e);
                 // don't abort in case of error, continue with downloading plugins below
@@ -1045,7 +1045,7 @@ public final class PluginHandler {
 
                 try {
                     pluginDownloadTask.run();
-                } catch (RuntimeException e) {
+                } catch (RuntimeException e) { // NOPMD
                     Main.error(e);
                     alertFailedPluginUpdate(parent, pluginsToUpdate);
                     return plugins;
diff --git a/src/org/openstreetmap/josm/tools/AudioPlayer.java b/src/org/openstreetmap/josm/tools/AudioPlayer.java
index 6f920d5..7f347c6 100644
--- a/src/org/openstreetmap/josm/tools/AudioPlayer.java
+++ b/src/org/openstreetmap/josm/tools/AudioPlayer.java
@@ -57,7 +57,7 @@ public final class AudioPlayer extends Thread {
         /*
          * Called to execute the commands in the other thread
          */
-        protected void play(URL url, double offset, double speed) throws Exception {
+        protected void play(URL url, double offset, double speed) throws InterruptedException, IOException {
             this.url = url;
             this.offset = offset;
             this.speed = speed;
@@ -66,19 +66,19 @@ public final class AudioPlayer extends Thread {
             send();
         }
 
-        protected void pause() throws Exception {
+        protected void pause() throws InterruptedException, IOException {
             command = Command.PAUSE;
             send();
         }
 
-        private void send() throws Exception {
+        private void send() throws InterruptedException, IOException {
             result = Result.WAITING;
             interrupt();
             while (result == Result.WAITING) {
                 sleep(10);
             }
             if (result == Result.FAILED)
-                throw exception;
+                throw new IOException(exception);
         }
 
         private void possiblyInterrupt() throws InterruptedException {
@@ -120,9 +120,10 @@ public final class AudioPlayer extends Thread {
      * Plays a WAV audio file from the beginning. See also the variant which doesn't
      * start at the beginning of the stream
      * @param url The resource to play, which must be a WAV file or stream
-     * @throws Exception audio fault exception, e.g. can't open stream, unhandleable audio format
+     * @throws InterruptedException thread interrupted
+     * @throws IOException audio fault exception, e.g. can't open stream, unhandleable audio format
      */
-    public static void play(URL url) throws Exception {
+    public static void play(URL url) throws InterruptedException, IOException {
         AudioPlayer instance = AudioPlayer.getInstance();
         if (instance != null)
             instance.command.play(url, 0.0, 1.0);
@@ -132,9 +133,10 @@ public final class AudioPlayer extends Thread {
      * Plays a WAV audio file from a specified position.
      * @param url The resource to play, which must be a WAV file or stream
      * @param seconds The number of seconds into the audio to start playing
-     * @throws Exception audio fault exception, e.g. can't open stream, unhandleable audio format
+     * @throws InterruptedException thread interrupted
+     * @throws IOException audio fault exception, e.g. can't open stream, unhandleable audio format
      */
-    public static void play(URL url, double seconds) throws Exception {
+    public static void play(URL url, double seconds) throws InterruptedException, IOException {
         AudioPlayer instance = AudioPlayer.getInstance();
         if (instance != null)
             instance.command.play(url, seconds, 1.0);
@@ -145,9 +147,10 @@ public final class AudioPlayer extends Thread {
      * @param url The resource to play, which must be a WAV file or stream
      * @param seconds The number of seconds into the audio to start playing
      * @param speed Rate at which audio playes (1.0 = real time, > 1 is faster)
-     * @throws Exception audio fault exception, e.g. can't open stream,  unhandleable audio format
+     * @throws InterruptedException thread interrupted
+     * @throws IOException audio fault exception, e.g. can't open stream,  unhandleable audio format
      */
-    public static void play(URL url, double seconds, double speed) throws Exception {
+    public static void play(URL url, double seconds, double speed) throws InterruptedException, IOException {
         AudioPlayer instance = AudioPlayer.getInstance();
         if (instance != null)
             instance.command.play(url, seconds, speed);
@@ -155,9 +158,10 @@ public final class AudioPlayer extends Thread {
 
     /**
      * Pauses the currently playing audio stream. Does nothing if nothing playing.
-     * @throws Exception audio fault exception, e.g. can't open stream,  unhandleable audio format
+     * @throws InterruptedException thread interrupted
+     * @throws IOException audio fault exception, e.g. can't open stream,  unhandleable audio format
      */
-    public static void pause() throws Exception {
+    public static void pause() throws InterruptedException, IOException {
         AudioPlayer instance = AudioPlayer.getInstance();
         if (instance != null)
             instance.command.pause();
@@ -219,7 +223,7 @@ public final class AudioPlayer extends Thread {
         try {
             audioPlayer = new AudioPlayer();
             return audioPlayer;
-        } catch (RuntimeException ex) {
+        } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException ex) {
             Main.error(ex);
             return null;
         }
@@ -232,7 +236,7 @@ public final class AudioPlayer extends Thread {
         if (audioPlayer != null) {
             try {
                 pause();
-            } catch (Exception e) {
+            } catch (InterruptedException | IOException e) {
                 Main.warn(e);
             }
             audioPlayer.playingUrl = null;
diff --git a/src/org/openstreetmap/josm/tools/ExceptionUtil.java b/src/org/openstreetmap/josm/tools/ExceptionUtil.java
index c66230b..92ab02d 100644
--- a/src/org/openstreetmap/josm/tools/ExceptionUtil.java
+++ b/src/org/openstreetmap/josm/tools/ExceptionUtil.java
@@ -14,6 +14,7 @@ import java.text.DateFormat;
 import java.text.ParseException;
 import java.util.Collection;
 import java.util.Date;
+import java.util.Objects;
 import java.util.Optional;
 import java.util.TreeSet;
 import java.util.regex.Matcher;
@@ -656,6 +657,7 @@ public final class ExceptionUtil {
      * @return The HTML formatted error message to display
      */
     public static String explainOsmTransferException(OsmTransferException e) {
+        Objects.requireNonNull(e, "e");
         if (getNestedException(e, SecurityException.class) != null)
             return explainSecurityException(e);
         if (getNestedException(e, SocketException.class) != null)
diff --git a/src/org/openstreetmap/josm/tools/ExifReader.java b/src/org/openstreetmap/josm/tools/ExifReader.java
index 01dea9f..306b856 100644
--- a/src/org/openstreetmap/josm/tools/ExifReader.java
+++ b/src/org/openstreetmap/josm/tools/ExifReader.java
@@ -8,6 +8,7 @@ import java.util.Date;
 import java.util.concurrent.TimeUnit;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.SystemOfMeasurement;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
@@ -41,10 +42,33 @@ public final class ExifReader {
      */
     public static Date readTime(File filename) {
         try {
-            Metadata metadata = JpegMetadataReader.readMetadata(filename);
-            String dateStr = null;
+            final Metadata metadata = JpegMetadataReader.readMetadata(filename);
+            return readTime(metadata);
+        } catch (JpegProcessingException | IOException e) {
+            Main.error(e);
+        }
+        return null;
+    }
+
+    /**
+     * Returns the date/time from the given JPEG file.
+     * @param metadata The EXIF metadata
+     * @return The date/time read in the EXIF section, or {@code null} if not found
+     * @since 11745
+     */
+    public static Date readTime(Metadata metadata) {
+        try {
+            String dateTimeOrig = null;
             String dateTime = null;
-            String subSeconds = null;
+            String dateTimeDig = null;
+            String subSecOrig = null;
+            String subSec = null;
+            String subSecDig = null;
+            // The date fields are preferred in this order: DATETIME_ORIGINAL
+            // (0x9003), DATETIME (0x0132), DATETIME_DIGITIZED (0x9004).  Some
+            // cameras store the fields in the wrong directory, so all
+            // directories are searched.  Assume that the order of the fields
+            // in the directories is random.
             for (Directory dirIt : metadata.getDirectories()) {
                 if (!(dirIt instanceof ExifDirectoryBase)) {
                     continue;
@@ -52,23 +76,33 @@ public final class ExifReader {
                 for (Tag tag : dirIt.getTags()) {
                     if (tag.getTagType() == ExifSubIFDDirectory.TAG_DATETIME_ORIGINAL /* 0x9003 */ &&
                             !tag.getDescription().matches("\\[[0-9]+ .+\\]")) {
-                        // prefer DATETIME_ORIGINAL
-                        dateStr = tag.getDescription();
-                    }
-                    if (tag.getTagType() == ExifIFD0Directory.TAG_DATETIME /* 0x0132 */) {
-                        // prefer DATETIME over DATETIME_DIGITIZED
-                        dateTime = tag.getDescription();
-                    }
-                    if (tag.getTagType() == ExifSubIFDDirectory.TAG_DATETIME_DIGITIZED /* 0x9004 */ && dateTime == null) {
+                        dateTimeOrig = tag.getDescription();
+                    } else if (tag.getTagType() == ExifIFD0Directory.TAG_DATETIME /* 0x0132 */) {
                         dateTime = tag.getDescription();
-                    }
-                    if (tag.getTagType() == ExifIFD0Directory.TAG_SUBSECOND_TIME_ORIGINAL) {
-                        subSeconds = tag.getDescription();
+                    } else if (tag.getTagType() == ExifSubIFDDirectory.TAG_DATETIME_DIGITIZED /* 0x9004 */) {
+                        dateTimeDig = tag.getDescription();
+                    } else if (tag.getTagType() == ExifSubIFDDirectory.TAG_SUBSECOND_TIME_ORIGINAL /* 0x9291 */) {
+                        subSecOrig = tag.getDescription();
+                    } else if (tag.getTagType() == ExifSubIFDDirectory.TAG_SUBSECOND_TIME /* 0x9290 */) {
+                        subSec = tag.getDescription();
+                    } else if (tag.getTagType() == ExifSubIFDDirectory.TAG_SUBSECOND_TIME_DIGITIZED /* 0x9292 */) {
+                        subSecDig = tag.getDescription();
                     }
                 }
             }
-            if (dateStr == null) {
+            String dateStr = null;
+            String subSeconds = null;
+            if (dateTimeOrig != null) {
+                // prefer TAG_DATETIME_ORIGINAL
+                dateStr = dateTimeOrig;
+                subSeconds = subSecOrig;
+            } else if (dateTime != null) {
+                // TAG_DATETIME is second choice, see #14209
                 dateStr = dateTime;
+                subSeconds = subSec;
+            } else if (dateTimeDig != null) {
+                dateStr = dateTimeDig;
+                subSeconds = subSecDig;
             }
             if (dateStr != null) {
                 dateStr = dateStr.replace('/', ':'); // workaround for HTC Sensation bug, see #7228
@@ -83,7 +117,7 @@ public final class ExifReader {
                 }
                 return date;
             }
-        } catch (UncheckedParseException | JpegProcessingException | IOException e) {
+        } catch (UncheckedParseException e) {
             Main.error(e);
         }
         return null;
@@ -153,7 +187,7 @@ public final class ExifReader {
      * Returns the direction of the given JPEG file.
      * @param filename The JPEG file to read
      * @return The direction of the image when it was captures (in degrees between 0.0 and 359.99),
-     * or {@code null} if missing or if {@code dirGps} is null
+     * or {@code null} if not found
      * @since 6209
      */
     public static Double readDirection(File filename) {
@@ -170,7 +204,7 @@ public final class ExifReader {
     /**
      * Returns the direction of the given EXIF GPS directory.
      * @param dirGps The EXIF GPS directory
-     * @return The direction of the image when it was captures (in degrees between 0.0 and 359.99),
+     * @return The direction of the image when it was captured (in degrees between 0.0 and 359.99),
      * or {@code null} if missing or if {@code dirGps} is null
      * @since 6209
      */
@@ -208,6 +242,89 @@ public final class ExifReader {
     }
 
     /**
+     * Returns the speed of the given JPEG file.
+     * @param filename The JPEG file to read
+     * @return The speed of the camera when the image was captured (in km/h),
+     *         or {@code null} if not found
+     * @since 11745
+     */
+    public static Double readSpeed(File filename) {
+        try {
+            final Metadata metadata = JpegMetadataReader.readMetadata(filename);
+            final GpsDirectory dirGps = metadata.getFirstDirectoryOfType(GpsDirectory.class);
+            return readSpeed(dirGps);
+        } catch (JpegProcessingException | IOException e) {
+            Main.error(e);
+        }
+        return null;
+    }
+
+    /**
+     * Returns the speed of the given EXIF GPS directory.
+     * @param dirGps The EXIF GPS directory
+     * @return The speed of the camera when the image was captured (in km/h),
+     *         or {@code null} if missing or if {@code dirGps} is null
+     * @since 11745
+     */
+    public static Double readSpeed(GpsDirectory dirGps) {
+        if (dirGps != null) {
+            Double speed = dirGps.getDoubleObject(GpsDirectory.TAG_SPEED);
+            if (speed != null) {
+                final String speedRef = dirGps.getString(GpsDirectory.TAG_SPEED_REF);
+                if ("M".equalsIgnoreCase(speedRef)) {
+                    // miles per hour
+                    speed *= SystemOfMeasurement.IMPERIAL.bValue / 1000;
+                } else if ("N".equalsIgnoreCase(speedRef)) {
+                    // knots == nautical miles per hour
+                    speed *= SystemOfMeasurement.NAUTICAL_MILE.bValue / 1000;
+                }
+                // default is K (km/h)
+                return speed;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Returns the elevation of the given JPEG file.
+     * @param filename The JPEG file to read
+     * @return The elevation of the camera when the image was captured (in m),
+     *         or {@code null} if not found
+     * @since 11745
+     */
+    public static Double readElevation(File filename) {
+        try {
+            final Metadata metadata = JpegMetadataReader.readMetadata(filename);
+            final GpsDirectory dirGps = metadata.getFirstDirectoryOfType(GpsDirectory.class);
+            return readElevation(dirGps);
+        } catch (JpegProcessingException | IOException e) {
+            Main.error(e);
+        }
+        return null;
+    }
+
+    /**
+     * Returns the elevation of the given EXIF GPS directory.
+     * @param dirGps The EXIF GPS directory
+     * @return The elevation of the camera when the image was captured (in m),
+     *         or {@code null} if missing or if {@code dirGps} is null
+     * @since 11745
+     */
+    public static Double readElevation(GpsDirectory dirGps) {
+        if (dirGps != null) {
+            Double ele = dirGps.getDoubleObject(GpsDirectory.TAG_ALTITUDE);
+            if (ele != null) {
+                final Integer d = dirGps.getInteger(GpsDirectory.TAG_ALTITUDE_REF);
+                if (d != null && d.intValue() == 1) {
+                    ele *= -1;
+                }
+                return ele;
+            }
+        }
+        return null;
+    }
+
+    /**
      * Returns a Transform that fixes the image orientation.
      *
      * Only orientation 1, 3, 6 and 8 are supported. Everything else is treated as 1.
diff --git a/src/org/openstreetmap/josm/tools/Geometry.java b/src/org/openstreetmap/josm/tools/Geometry.java
index b05915f..aedf19c 100644
--- a/src/org/openstreetmap/josm/tools/Geometry.java
+++ b/src/org/openstreetmap/josm/tools/Geometry.java
@@ -345,8 +345,6 @@ public final class Geometry {
         CheckParameterUtil.ensureValidCoordinates(p3, "p3");
         CheckParameterUtil.ensureValidCoordinates(p4, "p4");
 
-        if (!p1.isValid()) throw new IllegalArgumentException(p1+" is invalid");
-
         // Basically, the formula from wikipedia is used:
         //  https://en.wikipedia.org/wiki/Line%E2%80%93line_intersection
         // However, large numbers lead to rounding errors (see #10286).
@@ -534,7 +532,7 @@ public final class Geometry {
     public static Area getAreaLatLon(Relation multipolygon) {
         final Multipolygon mp = Main.map == null || Main.map.mapView == null
                 ? new Multipolygon(multipolygon)
-                : MultipolygonCache.getInstance().get(Main.map.mapView, multipolygon);
+                : MultipolygonCache.getInstance().get(multipolygon);
         Path2D path = new Path2D.Double();
         path.setWindingRule(Path2D.WIND_EVEN_ODD);
         for (Multipolygon.PolyData pd : mp.getCombinedPolygons()) {
@@ -674,7 +672,7 @@ public final class Geometry {
         double area = 0.0;
         final Multipolygon mp = Main.map == null || Main.map.mapView == null
                 ? new Multipolygon(multipolygon)
-                : MultipolygonCache.getInstance().get(Main.map.mapView, multipolygon);
+                : MultipolygonCache.getInstance().get(multipolygon);
         for (Multipolygon.PolyData pd : mp.getCombinedPolygons()) {
             area += pd.getAreaAndPerimeter(Projections.getProjectionByCode("EPSG:54008")).getArea();
         }
diff --git a/src/org/openstreetmap/josm/tools/ImageProvider.java b/src/org/openstreetmap/josm/tools/ImageProvider.java
index 5198a5d..24c13c3 100644
--- a/src/org/openstreetmap/josm/tools/ImageProvider.java
+++ b/src/org/openstreetmap/josm/tools/ImageProvider.java
@@ -788,9 +788,7 @@ public class ImageProvider {
             if (name == null)
                 return null;
 
-            String prefix = "";
-            if (isDisabled)
-                prefix = "dis:"+prefix;
+            String prefix = isDisabled ? "dis:" : "";
             if (name.startsWith("data:")) {
                 String url = name;
                 ImageResource ir = cache.get(prefix+url);
@@ -1796,7 +1794,7 @@ public class ImageProvider {
         return null;
     }
 
-    private static Color parseRGB(String ... s) {
+    private static Color parseRGB(String... s) {
         int[] rgb = new int[3];
         try {
             for (int i = 0; i < 3; i++) {
diff --git a/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java b/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java
index 28dbd32..3ec8294 100644
--- a/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java
+++ b/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java
@@ -81,7 +81,7 @@ public final class OsmUrlToBounds {
                         parseDouble(map, "lon"),
                         z == null ? 18 : Integer.parseInt(z));
             }
-        } catch (NumberFormatException | NullPointerException | ArrayIndexOutOfBoundsException ex) {
+        } catch (NumberFormatException | ArrayIndexOutOfBoundsException ex) {
             Main.error(ex);
         }
         return b;
diff --git a/src/org/openstreetmap/josm/tools/PlatformHook.java b/src/org/openstreetmap/josm/tools/PlatformHook.java
index 5346790..1dee41f 100644
--- a/src/org/openstreetmap/josm/tools/PlatformHook.java
+++ b/src/org/openstreetmap/josm/tools/PlatformHook.java
@@ -8,6 +8,7 @@ import java.security.KeyStore;
 import java.security.KeyStoreException;
 import java.security.NoSuchAlgorithmException;
 import java.security.cert.CertificateException;
+import java.util.List;
 
 /**
  * This interface allows platform (operating system) dependent code
@@ -171,4 +172,11 @@ public interface PlatformHook {
      * @since 7834
      */
     File getDefaultUserDataDirectory();
+
+    /**
+     * Returns the list of platform-dependent default datum shifting directories for the PROJ.4 library.
+     * @return the list of platform-dependent default datum shifting directories for the PROJ.4 library
+     * @since 11642
+     */
+    List<File> getDefaultProj4NadshiftDirectories();
 }
diff --git a/src/org/openstreetmap/josm/tools/PlatformHookOsx.java b/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
index 36223f7..c9008f9 100644
--- a/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
+++ b/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
@@ -14,6 +14,7 @@ import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 
 import javax.swing.UIManager;
@@ -381,4 +382,9 @@ public class PlatformHookOsx implements PlatformHook, InvocationHandler {
         return new File(System.getProperty("user.home")+"/Library",
                 Main.pref.getJOSMDirectoryBaseName());
     }
+
+    @Override
+    public List<File> getDefaultProj4NadshiftDirectories() {
+        return Collections.emptyList();
+    }
 }
diff --git a/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java b/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java
index 0d42a6a..07456b5 100644
--- a/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java
+++ b/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java
@@ -17,6 +17,7 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Arrays;
+import java.util.List;
 import java.util.Locale;
 
 import javax.swing.JOptionPane;
@@ -114,7 +115,7 @@ public class PlatformHookUnixoid implements PlatformHook {
      * @return The package name and package version if it can be identified, null otherwise
      * @since 7314
      */
-    public static String getPackageDetails(String ... packageNames) {
+    public static String getPackageDetails(String... packageNames) {
         try {
             // CHECKSTYLE.OFF: SingleSpaceSeparator
             boolean dpkg = Paths.get("/usr/bin/dpkg-query").toFile().exists();
@@ -432,4 +433,8 @@ public class PlatformHookUnixoid implements PlatformHook {
         }
     }
 
+    @Override
+    public List<File> getDefaultProj4NadshiftDirectories() {
+        return Arrays.asList(new File("/usr/local/share/proj"), new File("/usr/share/proj"));
+    }
 }
diff --git a/src/org/openstreetmap/josm/tools/PlatformHookWindows.java b/src/org/openstreetmap/josm/tools/PlatformHookWindows.java
index 601a5df..1d51666 100644
--- a/src/org/openstreetmap/josm/tools/PlatformHookWindows.java
+++ b/src/org/openstreetmap/josm/tools/PlatformHookWindows.java
@@ -52,6 +52,7 @@ import java.security.cert.CertificateException;
 import java.security.spec.InvalidKeySpecException;
 import java.security.spec.X509EncodedKeySpec;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Enumeration;
 import java.util.List;
@@ -571,4 +572,9 @@ public class PlatformHookWindows implements PlatformHook {
 
         return def;
     }
+
+    @Override
+    public List<File> getDefaultProj4NadshiftDirectories() {
+        return Arrays.asList(new File("C:\\PROJ\\NAD"));
+    }
 }
diff --git a/src/org/openstreetmap/josm/tools/RightAndLefthandTraffic.java b/src/org/openstreetmap/josm/tools/RightAndLefthandTraffic.java
index f17b6bc..7d794e9 100644
--- a/src/org/openstreetmap/josm/tools/RightAndLefthandTraffic.java
+++ b/src/org/openstreetmap/josm/tools/RightAndLefthandTraffic.java
@@ -156,7 +156,7 @@ public final class RightAndLefthandTraffic {
         try (Writer writer = new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8);
              OsmWriter w = OsmWriterFactory.createOsmWriter(new PrintWriter(writer), false, ds.getVersion())
             ) {
-            w.header(Boolean.FALSE);
+            w.header(DataSet.UploadPolicy.DISCOURAGED);
             w.writeContent(ds);
             w.footer();
         } catch (IOException ex) {
diff --git a/src/org/openstreetmap/josm/tools/Utils.java b/src/org/openstreetmap/josm/tools/Utils.java
index 7bab7ef..293d9b7 100644
--- a/src/org/openstreetmap/josm/tools/Utils.java
+++ b/src/org/openstreetmap/josm/tools/Utils.java
@@ -294,6 +294,19 @@ public final class Utils {
     }
 
     /**
+     * Multiply the alpha value of the given color with the factor. The alpha value is clamped to 0..255
+     * @param color The color
+     * @param alphaFactor The factor to multiply alpha with.
+     * @return The new color.
+     * @since 11692
+     */
+    public static Color alphaMultiply(Color color, float alphaFactor) {
+        int alpha = Utils.colorFloat2int(Utils.colorInt2float(color.getAlpha()) * alphaFactor);
+        alpha = clamp(alpha, 0, 255);
+        return new Color(color.getRed(), color.getGreen(), color.getBlue(), alpha);
+    }
+
+    /**
      * Returns the complementary color of {@code clr}.
      * @param clr the color to complement
      * @return the complementary color of {@code clr}
@@ -335,7 +348,7 @@ public final class Utils {
      * @return A copy of the original array, or {@code null} if {@code array} is null
      * @since 7436
      */
-    public static int[] copyArray(int ... array) {
+    public static int[] copyArray(int... array) {
         if (array != null) {
             return Arrays.copyOf(array, array.length);
         }
@@ -1493,10 +1506,13 @@ public final class Utils {
      * @param min minimum value
      * @param max maximum value
      * @return the value
+     * @throws IllegalArgumentException if {@code min > max}
      * @since 10805
      */
     public static double clamp(double val, double min, double max) {
-        if (val < min) {
+        if (min > max) {
+            throw new IllegalArgumentException(MessageFormat.format("Parameter min ({0}) cannot be greater than max ({1})", min, max));
+        } else if (val < min) {
             return min;
         } else if (val > max) {
             return max;
@@ -1511,10 +1527,13 @@ public final class Utils {
      * @param min minimum value
      * @param max maximum value
      * @return the value
+     * @throws IllegalArgumentException if {@code min > max}
      * @since 11055
      */
     public static int clamp(int val, int min, int max) {
-        if (val < min) {
+        if (min > max) {
+            throw new IllegalArgumentException(MessageFormat.format("Parameter min ({0}) cannot be greater than max ({1})", min, max));
+        } else if (val < min) {
             return min;
         } else if (val > max) {
             return max;
diff --git a/src/org/openstreetmap/josm/tools/WindowGeometry.java b/src/org/openstreetmap/josm/tools/WindowGeometry.java
index 7b1332c..eef0a1d 100644
--- a/src/org/openstreetmap/josm/tools/WindowGeometry.java
+++ b/src/org/openstreetmap/josm/tools/WindowGeometry.java
@@ -193,7 +193,7 @@ public class WindowGeometry {
                     tr("Preference with key ''{0}'' does not provide an int value for ''{1}''. Got {2}. " +
                        "Cannot restore window geometry from preferences.",
                             preferenceKey, field, v), e);
-        } catch (RuntimeException e) {
+        } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
             throw new WindowGeometryException(
                     tr("Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: {2}. " +
                        "Cannot restore window geometry from preferences.",
diff --git a/src/org/openstreetmap/josm/tools/bugreport/BugReport.java b/src/org/openstreetmap/josm/tools/bugreport/BugReport.java
index bf6db66..599211c 100644
--- a/src/org/openstreetmap/josm/tools/bugreport/BugReport.java
+++ b/src/org/openstreetmap/josm/tools/bugreport/BugReport.java
@@ -125,7 +125,7 @@ public final class BugReport implements Serializable {
         if (isIncludeStatusReport()) {
             try {
                 out.println(ShowStatusReportAction.getReportHeader());
-            } catch (RuntimeException e) {
+            } catch (RuntimeException e) { // NOPMD
                 out.println("Could not generate status report: " + e.getMessage());
             }
         }
diff --git a/src/org/openstreetmap/josm/tools/bugreport/BugReportDialog.java b/src/org/openstreetmap/josm/tools/bugreport/BugReportDialog.java
index 0ae2e7a..b81dcc5 100644
--- a/src/org/openstreetmap/josm/tools/bugreport/BugReportDialog.java
+++ b/src/org/openstreetmap/josm/tools/bugreport/BugReportDialog.java
@@ -221,7 +221,7 @@ public class BugReportDialog extends JDialog {
                 }
                 current = current.getParent();
             }
-        } catch (RuntimeException e) {
+        } catch (RuntimeException e) { // NOPMD
             BugReport.intercept(e).put("current", current).warn();
         }
         return null;
diff --git a/src/org/openstreetmap/josm/tools/bugreport/ReportedException.java b/src/org/openstreetmap/josm/tools/bugreport/ReportedException.java
index 953f4d8..e6260fe 100644
--- a/src/org/openstreetmap/josm/tools/bugreport/ReportedException.java
+++ b/src/org/openstreetmap/josm/tools/bugreport/ReportedException.java
@@ -65,7 +65,7 @@ public class ReportedException extends RuntimeException {
         methodWarningFrom = BugReport.getCallingMethod(2);
         try {
             BugReportQueue.getInstance().submit(this);
-        } catch (RuntimeException e) {
+        } catch (RuntimeException e) { // NOPMD
             e.printStackTrace();
         }
     }
@@ -134,12 +134,12 @@ public class ReportedException extends RuntimeException {
     }
 
     private static String niceThreadName(Thread thread) {
-        String name = "Thread: " + thread.getName() + " (" + thread.getId() + ')';
+        StringBuilder name = new StringBuilder("Thread: ").append(thread.getName()).append(" (").append(thread.getId()).append(')');
         ThreadGroup threadGroup = thread.getThreadGroup();
         if (threadGroup != null) {
-            name += " of " + threadGroup.getName();
+            name.append(" of ").append(threadGroup.getName());
         }
-        return name;
+        return name.toString();
     }
 
     /**
@@ -217,7 +217,7 @@ public class ReportedException extends RuntimeException {
             } else {
                 string = value.toString();
             }
-        } catch (RuntimeException t) {
+        } catch (RuntimeException t) { // NOPMD
             Main.warn(t);
             string = "<Error calling toString()>";
         }
@@ -227,7 +227,7 @@ public class ReportedException extends RuntimeException {
 
     private static String makeCollectionNice(Collection<?> value) {
         int lines = 0;
-        StringBuilder str = new StringBuilder();
+        StringBuilder str = new StringBuilder(32);
         for (Object e : value) {
             str.append("\n    - ");
             if (lines <= MAX_COLLECTION_ENTRIES) {
@@ -245,7 +245,7 @@ public class ReportedException extends RuntimeException {
     @Override
     public String toString() {
         return "ReportedException [thread=" + caughtOnThread + ", exception=" + getCause()
-                + ", methodWarningFrom=" + methodWarningFrom + "]";
+                + ", methodWarningFrom=" + methodWarningFrom + ']';
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/tools/template_engine/ContextSwitchTemplate.java b/src/org/openstreetmap/josm/tools/template_engine/ContextSwitchTemplate.java
index d7bc25b..55ef71c 100644
--- a/src/org/openstreetmap/josm/tools/template_engine/ContextSwitchTemplate.java
+++ b/src/org/openstreetmap/josm/tools/template_engine/ContextSwitchTemplate.java
@@ -22,7 +22,7 @@ import org.openstreetmap.josm.data.osm.Way;
 
 public class ContextSwitchTemplate implements TemplateEntry {
 
-    private static final TemplateEngineDataProvider EMTPY_PROVIDER = new TemplateEngineDataProvider() {
+    private static final TemplateEngineDataProvider EMPTY_PROVIDER = new TemplateEngineDataProvider() {
         @Override
         public Object getTemplateValue(String name, boolean special) {
             return null;
@@ -257,21 +257,23 @@ public class ContextSwitchTemplate implements TemplateEntry {
 
     @Override
     public void appendText(StringBuilder result, TemplateEngineDataProvider dataProvider) {
-        List<OsmPrimitive> primitives = context.getPrimitives((OsmPrimitive) dataProvider);
-        if (primitives != null && !primitives.isEmpty()) {
-            template.appendText(result, primitives.get(0));
-        } else {
-            template.appendText(result, EMTPY_PROVIDER);
+        if (dataProvider instanceof OsmPrimitive) {
+            List<OsmPrimitive> primitives = context.getPrimitives((OsmPrimitive) dataProvider);
+            if (primitives != null && !primitives.isEmpty()) {
+                template.appendText(result, primitives.get(0));
+            }
         }
+        template.appendText(result, EMPTY_PROVIDER);
     }
 
     @Override
     public boolean isValid(TemplateEngineDataProvider dataProvider) {
-        List<OsmPrimitive> primitives = context.getPrimitives((OsmPrimitive) dataProvider);
-        if (primitives != null && !primitives.isEmpty())
-            return template.isValid(primitives.get(0));
-        else
-            return false;
+        if (dataProvider instanceof OsmPrimitive) {
+            List<OsmPrimitive> primitives = context.getPrimitives((OsmPrimitive) dataProvider);
+            if (primitives != null && !primitives.isEmpty()) {
+                return template.isValid(primitives.get(0));
+            }
+        }
+        return false;
     }
-
 }
diff --git a/test/data/regress/14209/7VWFOryj--.1.jpg b/test/data/regress/14209/7VWFOryj--.1.jpg
index 795d761..be2ff9c 100644
Binary files a/test/data/regress/14209/7VWFOryj--.1.jpg and b/test/data/regress/14209/7VWFOryj--.1.jpg differ
diff --git a/test/data/renderer/area-fill-color/data.osm b/test/data/renderer/area-fill-color/data.osm
new file mode 100644
index 0000000..58b9129
--- /dev/null
+++ b/test/data/renderer/area-fill-color/data.osm
@@ -0,0 +1,245 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<osm version='0.6' upload='true' generator='JOSM'>
+  <node id='-38186' action='modify' visible='true' lat='0.1' lon='0.1'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38188' action='modify' visible='true' lat='0.1' lon='0.3'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38190' action='modify' visible='true' lat='0.1' lon='0.5'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38192' action='modify' visible='true' lat='0.1' lon='0.7'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38194' action='modify' visible='true' lat='0.1' lon='0.9'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38196' action='modify' visible='true' lat='0.3' lon='0.1'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38198' action='modify' visible='true' lat='0.3' lon='0.3'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38200' action='modify' visible='true' lat='0.3' lon='0.5'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38202' action='modify' visible='true' lat='0.3' lon='0.7'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38206' action='modify' visible='true' lat='0.5' lon='0.1'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38208' action='modify' visible='true' lat='0.5' lon='0.3'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38210' action='modify' visible='true' lat='0.5' lon='0.5'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38216' action='modify' visible='true' lat='0.7' lon='0.1'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38218' action='modify' visible='true' lat='0.7' lon='0.3'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38220' action='modify' visible='true' lat='0.7' lon='0.5'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38226' action='modify' visible='true' lat='0.9' lon='0.1'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38228' action='modify' visible='true' lat='0.9' lon='0.3'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38230' action='modify' visible='true' lat='0.9' lon='0.5'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38232' action='modify' visible='true' lat='0.9' lon='0.7'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38234' action='modify' visible='true' lat='0.9' lon='0.9'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38319' action='modify' visible='true' lat='0.19089711749' lon='0.44427860697'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38321' action='modify' visible='true' lat='0.15109630052' lon='0.41509121061'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38323' action='modify' visible='true' lat='0.19885727044' lon='0.36733001658'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38325' action='modify' visible='true' lat='0.1537496908' lon='0.30630182421'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38327' action='modify' visible='true' lat='0.21743094548' lon='0.25058043118'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38329' action='modify' visible='true' lat='0.16967002535' lon='0.22935323383'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38331' action='modify' visible='true' lat='0.22539108504' lon='0.17097844113'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38333' action='modify' visible='true' lat='0.1537496908' lon='0.15505804312'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38335' action='modify' visible='true' lat='0.14578951899' lon='0.09668325041'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38341' action='modify' visible='true' lat='0.80380642593' lon='0.88739635158'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38343' action='modify' visible='true' lat='0.75870282602' lon='0.68573797678'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38345' action='modify' visible='true' lat='0.58093726781' lon='0.8263681592'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38347' action='modify' visible='true' lat='0.93115498623' lon='0.79718076285'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38349' action='modify' visible='true' lat='0.59420356851' lon='0.74941956882'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38351' action='modify' visible='true' lat='0.71625194903' lon='0.85555555556'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38353' action='modify' visible='true' lat='0.83564396289' lon='0.71227197347'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38453' action='modify' visible='true' lat='0.43765938366' lon='0.90331674959' />
+  <node id='-38454' action='modify' visible='true' lat='0.4986855358' lon='0.8688225539' />
+  <node id='-38456' action='modify' visible='true' lat='0.53632910737' lon='0.62553897181' />
+  <node id='-38458' action='modify' visible='true' lat='0.37132604871' lon='0.72819237148' />
+  <node id='-38460' action='modify' visible='true' lat='0.283765299' lon='0.83698175788' />
+  <node id='-38473' action='modify' visible='true' lat='0.36601935924' lon='0.92189054726' />
+  <node id='-38474' action='modify' visible='true' lat='0.27049845588' lon='0.88739635158' />
+  <node id='-38476' action='modify' visible='true' lat='0.30764557779' lon='0.95903814262' />
+  <node id='-38479' action='modify' visible='true' lat='0.41489758295' lon='0.89350535698' />
+  <node id='-38481' action='modify' visible='true' lat='0.41908610519' lon='0.86086235489' />
+  <node id='-38482' action='modify' visible='true' lat='0.46949918154' lon='0.83963515755' />
+  <node id='-38484' action='modify' visible='true' lat='0.46601671054' lon='0.7767827529' />
+  <node id='-38486' action='modify' visible='true' lat='0.40316611708' lon='0.7679933665' />
+  <node id='-38488' action='modify' visible='true' lat='0.35009927216' lon='0.81044776119' />
+  <node id='-38492' action='modify' visible='true' lat='0.42173943342' lon='0.82902155887' />
+  <node id='-38493' action='modify' visible='true' lat='0.47264998715' lon='0.80464344942' />
+  <node id='-38495' action='modify' visible='true' lat='0.41643277605' lon='0.79187396352' />
+  <node id='-38498' action='modify' visible='true' lat='0.38907026826' lon='0.81127694859' />
+  <node id='-38504' action='modify' visible='true' lat='0.39305027505' lon='0.62155887231' />
+  <node id='-38506' action='modify' visible='true' lat='0.55622870027' lon='0.76616915423' />
+  <node id='-38508' action='modify' visible='true' lat='0.50316297662' lon='0.80729684909' />
+  <node id='-38510' action='modify' visible='true' lat='0.45009682134' lon='0.8311774461' />
+  <node id='-38512' action='modify' visible='true' lat='0.50581627343' lon='0.69585406302' />
+  <node id='-38513' action='modify' visible='true' lat='0.50448962516' lon='0.65339966833' />
+  <node id='-38515' action='modify' visible='true' lat='0.46336339813' lon='0.65870646766' />
+  <node id='-38517' action='modify' visible='true' lat='0.41427694547' lon='0.68789386401' />
+  <node id='-38519' action='modify' visible='true' lat='0.46336339813' lon='0.73167495854' />
+  <way id='-38236' action='modify' visible='true'>
+    <nd ref='-38234' />
+    <nd ref='-38232' />
+    <nd ref='-38341' />
+    <nd ref='-38343' />
+    <nd ref='-38345' />
+    <nd ref='-38347' />
+    <nd ref='-38349' />
+    <nd ref='-38351' />
+    <nd ref='-38353' />
+    <nd ref='-38234' />
+    <tag k='test' v='E' />
+  </way>
+  <way id='-38246' action='modify' visible='true'>
+    <nd ref='-38230' />
+    <nd ref='-38228' />
+    <nd ref='-38226' />
+    <nd ref='-38216' />
+    <nd ref='-38218' />
+    <nd ref='-38220' />
+    <nd ref='-38230' />
+    <tag k='test' v='A' />
+  </way>
+  <way id='-38311' action='modify' visible='true'>
+    <nd ref='-38206' />
+    <nd ref='-38208' />
+    <nd ref='-38200' />
+    <nd ref='-38210' />
+    <nd ref='-38198' />
+    <nd ref='-38196' />
+    <nd ref='-38206' />
+    <tag k='test' v='B' />
+  </way>
+  <way id='-38317' action='modify' visible='true'>
+    <nd ref='-38186' />
+    <nd ref='-38188' />
+    <nd ref='-38190' />
+    <nd ref='-38319' />
+    <nd ref='-38321' />
+    <nd ref='-38323' />
+    <nd ref='-38325' />
+    <nd ref='-38327' />
+    <nd ref='-38329' />
+    <nd ref='-38331' />
+    <nd ref='-38333' />
+    <nd ref='-38335' />
+    <nd ref='-38186' />
+    <tag k='test' v='C' />
+  </way>
+  <way id='-38338' action='modify' visible='true'>
+    <nd ref='-38192' />
+    <nd ref='-38202' />
+    <nd ref='-38194' />
+    <nd ref='-38192' />
+    <tag k='test' v='D' />
+  </way>
+  <way id='-38455' action='modify' visible='true'>
+    <nd ref='-38453' />
+    <nd ref='-38454' />
+    <nd ref='-38506' />
+    <nd ref='-38456' />
+    <nd ref='-38504' />
+    <nd ref='-38458' />
+    <nd ref='-38460' />
+    <nd ref='-38479' />
+    <nd ref='-38453' />
+  </way>
+  <way id='-38475' action='modify' visible='true'>
+    <nd ref='-38473' />
+    <nd ref='-38474' />
+    <nd ref='-38476' />
+    <nd ref='-38473' />
+  </way>
+  <way id='-38483' action='modify' visible='true'>
+    <nd ref='-38481' />
+    <nd ref='-38482' />
+    <nd ref='-38508' />
+    <nd ref='-38484' />
+    <nd ref='-38486' />
+    <nd ref='-38488' />
+    <nd ref='-38481' />
+  </way>
+  <way id='-38494' action='modify' visible='true'>
+    <nd ref='-38492' />
+    <nd ref='-38510' />
+    <nd ref='-38493' />
+    <nd ref='-38495' />
+    <nd ref='-38498' />
+    <nd ref='-38492' />
+  </way>
+  <way id='-38514' action='modify' visible='true'>
+    <nd ref='-38512' />
+    <nd ref='-38513' />
+    <nd ref='-38515' />
+    <nd ref='-38517' />
+    <nd ref='-38519' />
+    <nd ref='-38512' />
+  </way>
+  <relation id='-38523' action='modify' visible='true'>
+    <member type='way' ref='-38494' role='outer' />
+    <member type='way' ref='-38455' role='outer' />
+    <member type='way' ref='-38475' role='outer' />
+    <member type='way' ref='-38514' role='inner' />
+    <member type='way' ref='-38483' role='inner' />
+    <tag k='test' v='F' />
+    <tag k='type' v='multipolygon' />
+  </relation>
+</osm>
diff --git a/test/data/renderer/area-fill-color/reference.png b/test/data/renderer/area-fill-color/reference.png
new file mode 100644
index 0000000..7c2c9ec
Binary files /dev/null and b/test/data/renderer/area-fill-color/reference.png differ
diff --git a/test/data/renderer/area-fill-color/style.mapcss b/test/data/renderer/area-fill-color/style.mapcss
new file mode 100644
index 0000000..db90061
--- /dev/null
+++ b/test/data/renderer/area-fill-color/style.mapcss
@@ -0,0 +1,34 @@
+canvas {
+    default-points: false;
+    default-lines: false;
+}
+
+area[test=A] {
+	fill-color: green;
+	fill-opacity: 1;
+}
+
+area[test=B] {
+	fill-color: rgba(0.5, 0, 1.0, 0.5);
+	fill-opacity: 1;
+}
+
+area[test=C] {
+	fill-color: red;
+	fill-opacity: .5;
+}
+
+area[test=D] {
+	fill-color: rgba(0.5, 0, 1.0, 0.5);
+	fill-opacity: .5;
+}
+
+area[test=E] {
+	fill-color: blue;
+	fill-opacity: 1;
+}
+
+area[test=F] {
+	fill-color: red;
+	fill-opacity: 1;
+}
\ No newline at end of file
diff --git a/test/data/renderer/area-fill-image/data.osm b/test/data/renderer/area-fill-image/data.osm
new file mode 100644
index 0000000..58b9129
--- /dev/null
+++ b/test/data/renderer/area-fill-image/data.osm
@@ -0,0 +1,245 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<osm version='0.6' upload='true' generator='JOSM'>
+  <node id='-38186' action='modify' visible='true' lat='0.1' lon='0.1'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38188' action='modify' visible='true' lat='0.1' lon='0.3'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38190' action='modify' visible='true' lat='0.1' lon='0.5'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38192' action='modify' visible='true' lat='0.1' lon='0.7'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38194' action='modify' visible='true' lat='0.1' lon='0.9'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38196' action='modify' visible='true' lat='0.3' lon='0.1'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38198' action='modify' visible='true' lat='0.3' lon='0.3'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38200' action='modify' visible='true' lat='0.3' lon='0.5'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38202' action='modify' visible='true' lat='0.3' lon='0.7'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38206' action='modify' visible='true' lat='0.5' lon='0.1'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38208' action='modify' visible='true' lat='0.5' lon='0.3'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38210' action='modify' visible='true' lat='0.5' lon='0.5'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38216' action='modify' visible='true' lat='0.7' lon='0.1'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38218' action='modify' visible='true' lat='0.7' lon='0.3'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38220' action='modify' visible='true' lat='0.7' lon='0.5'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38226' action='modify' visible='true' lat='0.9' lon='0.1'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38228' action='modify' visible='true' lat='0.9' lon='0.3'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38230' action='modify' visible='true' lat='0.9' lon='0.5'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38232' action='modify' visible='true' lat='0.9' lon='0.7'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38234' action='modify' visible='true' lat='0.9' lon='0.9'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38319' action='modify' visible='true' lat='0.19089711749' lon='0.44427860697'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38321' action='modify' visible='true' lat='0.15109630052' lon='0.41509121061'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38323' action='modify' visible='true' lat='0.19885727044' lon='0.36733001658'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38325' action='modify' visible='true' lat='0.1537496908' lon='0.30630182421'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38327' action='modify' visible='true' lat='0.21743094548' lon='0.25058043118'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38329' action='modify' visible='true' lat='0.16967002535' lon='0.22935323383'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38331' action='modify' visible='true' lat='0.22539108504' lon='0.17097844113'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38333' action='modify' visible='true' lat='0.1537496908' lon='0.15505804312'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38335' action='modify' visible='true' lat='0.14578951899' lon='0.09668325041'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38341' action='modify' visible='true' lat='0.80380642593' lon='0.88739635158'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38343' action='modify' visible='true' lat='0.75870282602' lon='0.68573797678'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38345' action='modify' visible='true' lat='0.58093726781' lon='0.8263681592'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38347' action='modify' visible='true' lat='0.93115498623' lon='0.79718076285'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38349' action='modify' visible='true' lat='0.59420356851' lon='0.74941956882'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38351' action='modify' visible='true' lat='0.71625194903' lon='0.85555555556'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38353' action='modify' visible='true' lat='0.83564396289' lon='0.71227197347'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-38453' action='modify' visible='true' lat='0.43765938366' lon='0.90331674959' />
+  <node id='-38454' action='modify' visible='true' lat='0.4986855358' lon='0.8688225539' />
+  <node id='-38456' action='modify' visible='true' lat='0.53632910737' lon='0.62553897181' />
+  <node id='-38458' action='modify' visible='true' lat='0.37132604871' lon='0.72819237148' />
+  <node id='-38460' action='modify' visible='true' lat='0.283765299' lon='0.83698175788' />
+  <node id='-38473' action='modify' visible='true' lat='0.36601935924' lon='0.92189054726' />
+  <node id='-38474' action='modify' visible='true' lat='0.27049845588' lon='0.88739635158' />
+  <node id='-38476' action='modify' visible='true' lat='0.30764557779' lon='0.95903814262' />
+  <node id='-38479' action='modify' visible='true' lat='0.41489758295' lon='0.89350535698' />
+  <node id='-38481' action='modify' visible='true' lat='0.41908610519' lon='0.86086235489' />
+  <node id='-38482' action='modify' visible='true' lat='0.46949918154' lon='0.83963515755' />
+  <node id='-38484' action='modify' visible='true' lat='0.46601671054' lon='0.7767827529' />
+  <node id='-38486' action='modify' visible='true' lat='0.40316611708' lon='0.7679933665' />
+  <node id='-38488' action='modify' visible='true' lat='0.35009927216' lon='0.81044776119' />
+  <node id='-38492' action='modify' visible='true' lat='0.42173943342' lon='0.82902155887' />
+  <node id='-38493' action='modify' visible='true' lat='0.47264998715' lon='0.80464344942' />
+  <node id='-38495' action='modify' visible='true' lat='0.41643277605' lon='0.79187396352' />
+  <node id='-38498' action='modify' visible='true' lat='0.38907026826' lon='0.81127694859' />
+  <node id='-38504' action='modify' visible='true' lat='0.39305027505' lon='0.62155887231' />
+  <node id='-38506' action='modify' visible='true' lat='0.55622870027' lon='0.76616915423' />
+  <node id='-38508' action='modify' visible='true' lat='0.50316297662' lon='0.80729684909' />
+  <node id='-38510' action='modify' visible='true' lat='0.45009682134' lon='0.8311774461' />
+  <node id='-38512' action='modify' visible='true' lat='0.50581627343' lon='0.69585406302' />
+  <node id='-38513' action='modify' visible='true' lat='0.50448962516' lon='0.65339966833' />
+  <node id='-38515' action='modify' visible='true' lat='0.46336339813' lon='0.65870646766' />
+  <node id='-38517' action='modify' visible='true' lat='0.41427694547' lon='0.68789386401' />
+  <node id='-38519' action='modify' visible='true' lat='0.46336339813' lon='0.73167495854' />
+  <way id='-38236' action='modify' visible='true'>
+    <nd ref='-38234' />
+    <nd ref='-38232' />
+    <nd ref='-38341' />
+    <nd ref='-38343' />
+    <nd ref='-38345' />
+    <nd ref='-38347' />
+    <nd ref='-38349' />
+    <nd ref='-38351' />
+    <nd ref='-38353' />
+    <nd ref='-38234' />
+    <tag k='test' v='E' />
+  </way>
+  <way id='-38246' action='modify' visible='true'>
+    <nd ref='-38230' />
+    <nd ref='-38228' />
+    <nd ref='-38226' />
+    <nd ref='-38216' />
+    <nd ref='-38218' />
+    <nd ref='-38220' />
+    <nd ref='-38230' />
+    <tag k='test' v='A' />
+  </way>
+  <way id='-38311' action='modify' visible='true'>
+    <nd ref='-38206' />
+    <nd ref='-38208' />
+    <nd ref='-38200' />
+    <nd ref='-38210' />
+    <nd ref='-38198' />
+    <nd ref='-38196' />
+    <nd ref='-38206' />
+    <tag k='test' v='B' />
+  </way>
+  <way id='-38317' action='modify' visible='true'>
+    <nd ref='-38186' />
+    <nd ref='-38188' />
+    <nd ref='-38190' />
+    <nd ref='-38319' />
+    <nd ref='-38321' />
+    <nd ref='-38323' />
+    <nd ref='-38325' />
+    <nd ref='-38327' />
+    <nd ref='-38329' />
+    <nd ref='-38331' />
+    <nd ref='-38333' />
+    <nd ref='-38335' />
+    <nd ref='-38186' />
+    <tag k='test' v='C' />
+  </way>
+  <way id='-38338' action='modify' visible='true'>
+    <nd ref='-38192' />
+    <nd ref='-38202' />
+    <nd ref='-38194' />
+    <nd ref='-38192' />
+    <tag k='test' v='D' />
+  </way>
+  <way id='-38455' action='modify' visible='true'>
+    <nd ref='-38453' />
+    <nd ref='-38454' />
+    <nd ref='-38506' />
+    <nd ref='-38456' />
+    <nd ref='-38504' />
+    <nd ref='-38458' />
+    <nd ref='-38460' />
+    <nd ref='-38479' />
+    <nd ref='-38453' />
+  </way>
+  <way id='-38475' action='modify' visible='true'>
+    <nd ref='-38473' />
+    <nd ref='-38474' />
+    <nd ref='-38476' />
+    <nd ref='-38473' />
+  </way>
+  <way id='-38483' action='modify' visible='true'>
+    <nd ref='-38481' />
+    <nd ref='-38482' />
+    <nd ref='-38508' />
+    <nd ref='-38484' />
+    <nd ref='-38486' />
+    <nd ref='-38488' />
+    <nd ref='-38481' />
+  </way>
+  <way id='-38494' action='modify' visible='true'>
+    <nd ref='-38492' />
+    <nd ref='-38510' />
+    <nd ref='-38493' />
+    <nd ref='-38495' />
+    <nd ref='-38498' />
+    <nd ref='-38492' />
+  </way>
+  <way id='-38514' action='modify' visible='true'>
+    <nd ref='-38512' />
+    <nd ref='-38513' />
+    <nd ref='-38515' />
+    <nd ref='-38517' />
+    <nd ref='-38519' />
+    <nd ref='-38512' />
+  </way>
+  <relation id='-38523' action='modify' visible='true'>
+    <member type='way' ref='-38494' role='outer' />
+    <member type='way' ref='-38455' role='outer' />
+    <member type='way' ref='-38475' role='outer' />
+    <member type='way' ref='-38514' role='inner' />
+    <member type='way' ref='-38483' role='inner' />
+    <tag k='test' v='F' />
+    <tag k='type' v='multipolygon' />
+  </relation>
+</osm>
diff --git a/test/data/renderer/area-fill-image/reference.png b/test/data/renderer/area-fill-image/reference.png
new file mode 100644
index 0000000..0e58201
Binary files /dev/null and b/test/data/renderer/area-fill-image/reference.png differ
diff --git a/test/data/renderer/area-fill-image/style.mapcss b/test/data/renderer/area-fill-image/style.mapcss
new file mode 100644
index 0000000..3dd22d9
--- /dev/null
+++ b/test/data/renderer/area-fill-image/style.mapcss
@@ -0,0 +1,34 @@
+canvas {
+    default-points: false;
+    default-lines: false;
+}
+
+area[test=A] {
+	fill-image: "info.png";
+	fill-opacity: 1;
+}
+
+area[test=B] {
+	fill-image: "apply.png";
+	fill-opacity: 1;
+}
+
+area[test=C] {
+	fill-image: "apply.png";
+	fill-opacity: .5;
+}
+
+area[test=D] {
+	fill-image: "apply.png";
+	fill-opacity: .5;
+}
+
+area[test=E] {
+	fill-image: "apply.png";
+	fill-opacity: 1;
+}
+
+area[test=F] {
+	fill-image: "info.png";
+	fill-opacity: .8;
+}
\ No newline at end of file
diff --git a/test/data/renderer/area-icon/data.osm b/test/data/renderer/area-icon/data.osm
new file mode 100644
index 0000000..8db51d1
--- /dev/null
+++ b/test/data/renderer/area-icon/data.osm
@@ -0,0 +1,251 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<osm version='0.6' generator='JOSM'>
+  <node id='-39682' action='modify' visible='true' lat='0.1' lon='0.1'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39684' action='modify' visible='true' lat='0.1' lon='0.3'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39686' action='modify' visible='true' lat='0.1' lon='0.5'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39688' action='modify' visible='true' lat='0.1' lon='0.7'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39690' action='modify' visible='true' lat='0.1' lon='0.9'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39692' action='modify' visible='true' lat='0.3' lon='0.1'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39694' action='modify' visible='true' lat='0.3' lon='0.3'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39696' action='modify' visible='true' lat='0.3' lon='0.5'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39698' action='modify' visible='true' lat='0.3' lon='0.7'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39700' action='modify' visible='true' lat='0.5' lon='0.1'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39702' action='modify' visible='true' lat='0.5' lon='0.3'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39704' action='modify' visible='true' lat='0.5' lon='0.5'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39706' action='modify' visible='true' lat='0.7' lon='0.1'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39708' action='modify' visible='true' lat='0.7' lon='0.3'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39710' action='modify' visible='true' lat='0.7' lon='0.5'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39712' action='modify' visible='true' lat='0.9' lon='0.1'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39714' action='modify' visible='true' lat='0.9' lon='0.3'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39716' action='modify' visible='true' lat='0.9' lon='0.5'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39718' action='modify' visible='true' lat='0.19089711749' lon='0.44427860697'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39720' action='modify' visible='true' lat='0.17696341277' lon='0.41053111249'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39722' action='modify' visible='true' lat='0.19885727044' lon='0.36733001658'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39724' action='modify' visible='true' lat='0.17696341277' lon='0.30584194031'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39726' action='modify' visible='true' lat='0.21743094548' lon='0.25058043118'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39728' action='modify' visible='true' lat='0.14086383768' lon='0.21739763968'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39730' action='modify' visible='true' lat='0.22539108504' lon='0.17097844113'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39732' action='modify' visible='true' lat='0.1537496908' lon='0.15505804312'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39734' action='modify' visible='true' lat='0.14578951899' lon='0.09668325041'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-39736' action='modify' visible='true' lat='0.43765938366' lon='0.90331674959' />
+  <node id='-39738' action='modify' visible='true' lat='0.4986855358' lon='0.8688225539' />
+  <node id='-39740' action='modify' visible='true' lat='0.57098187581' lon='0.63131470296' />
+  <node id='-39742' action='modify' visible='true' lat='0.34389186038' lon='0.62567314359' />
+  <node id='-39744' action='modify' visible='true' lat='0.283765299' lon='0.83698175788' />
+  <node id='-39746' action='modify' visible='true' lat='0.36601935924' lon='0.92189054726' />
+  <node id='-39748' action='modify' visible='true' lat='0.27049845588' lon='0.88739635158' />
+  <node id='-39750' action='modify' visible='true' lat='0.27688757429' lon='0.96737472108' />
+  <node id='-39752' action='modify' visible='true' lat='0.41489758295' lon='0.89350535698' />
+  <node id='-39754' action='modify' visible='true' lat='0.42399111908' lon='0.87983291331' />
+  <node id='-39756' action='modify' visible='true' lat='0.46911439058' lon='0.86088056318' />
+  <node id='-39758' action='modify' visible='true' lat='0.46024116808' lon='0.74068443322' />
+  <node id='-39760' action='modify' visible='true' lat='0.34541004041' lon='0.72178751731' />
+  <node id='-39762' action='modify' visible='true' lat='0.31400155928' lon='0.764241912' />
+  <node id='-39764' action='modify' visible='true' lat='0.34024405046' lon='0.84247048989' />
+  <node id='-39766' action='modify' visible='true' lat='0.45160681742' lon='0.76070525018' />
+  <node id='-39768' action='modify' visible='true' lat='0.35019401985' lon='0.73880922436' />
+  <node id='-39770' action='modify' visible='true' lat='0.33194025468' lon='0.77316004226' />
+  <node id='-39772' action='modify' visible='true' lat='0.39305027505' lon='0.62155887231' />
+  <node id='-39774' action='modify' visible='true' lat='0.59088135032' lon='0.77194488538' />
+  <node id='-39776' action='modify' visible='true' lat='0.49738746564' lon='0.77119852941' />
+  <node id='-39778' action='modify' visible='true' lat='0.44655278945' lon='0.85907557745' />
+  <node id='-39780' action='modify' visible='true' lat='0.43434359223' lon='0.68755124027' />
+  <node id='-39782' action='modify' visible='true' lat='0.4330169304' lon='0.64509684558' />
+  <node id='-39784' action='modify' visible='true' lat='0.3615424267' lon='0.6450043818' />
+  <node id='-39786' action='modify' visible='true' lat='0.34280341859' lon='0.67959104126' />
+  <node id='-39788' action='modify' visible='true' lat='0.37146936612' lon='0.69933601443' />
+  <node id='-39790' action='modify' visible='true' lat='0.32237376311' lon='0.84355309076' />
+  <node id='-39792' action='modify' visible='true' lat='0.68082279503' lon='0.65420969742' />
+  <node id='-39794' action='modify' visible='true' lat='0.62848162751' lon='0.65420969742' />
+  <node id='-39796' action='modify' visible='true' lat='0.63028650434' lon='0.91845832461' />
+  <node id='-39798' action='modify' visible='true' lat='0.68443251028' lon='0.91665333888' />
+  <node id='-39800' action='modify' visible='true' lat='0.77798179167' lon='0.65230446444' />
+  <node id='-39802' action='modify' visible='true' lat='0.72564171358' lon='0.65230446444' />
+  <node id='-39804' action='modify' visible='true' lat='0.72744655419' lon='0.91655309163' />
+  <node id='-39806' action='modify' visible='true' lat='0.7815914288' lon='0.9147481059' />
+  <node id='-39808' action='modify' visible='true' lat='0.89258373298' lon='0.65808019559' />
+  <node id='-39810' action='modify' visible='true' lat='0.84024513338' lon='0.65808019559' />
+  <node id='-39812' action='modify' visible='true' lat='0.8420499246' lon='0.92232882277' />
+  <node id='-39814' action='modify' visible='true' lat='0.89619326463' lon='0.92052383704' />
+  <node id='-39955' action='modify' visible='true' lat='0.50470478643' lon='0.81395686244' />
+  <node id='-39969' action='modify' visible='true' lat='0.47727107105' lon='0.80818113129' />
+  <way id='-39816' action='modify' visible='true'>
+    <nd ref='-39716' />
+    <nd ref='-39714' />
+    <nd ref='-39712' />
+    <nd ref='-39706' />
+    <nd ref='-39708' />
+    <nd ref='-39710' />
+    <nd ref='-39716' />
+    <tag k='test' v='A' />
+  </way>
+  <way id='-39818' action='modify' visible='true'>
+    <nd ref='-39700' />
+    <nd ref='-39702' />
+    <nd ref='-39696' />
+    <nd ref='-39704' />
+    <nd ref='-39694' />
+    <nd ref='-39692' />
+    <nd ref='-39700' />
+    <tag k='test' v='B' />
+  </way>
+  <way id='-39820' action='modify' visible='true'>
+    <nd ref='-39682' />
+    <nd ref='-39684' />
+    <nd ref='-39686' />
+    <nd ref='-39718' />
+    <nd ref='-39720' />
+    <nd ref='-39722' />
+    <nd ref='-39724' />
+    <nd ref='-39726' />
+    <nd ref='-39728' />
+    <nd ref='-39730' />
+    <nd ref='-39732' />
+    <nd ref='-39734' />
+    <nd ref='-39682' />
+    <tag k='test' v='C' />
+  </way>
+  <way id='-39822' action='modify' visible='true'>
+    <nd ref='-39688' />
+    <nd ref='-39698' />
+    <nd ref='-39690' />
+    <nd ref='-39688' />
+  </way>
+  <way id='-39824' action='modify' visible='true'>
+    <nd ref='-39736' />
+    <nd ref='-39738' />
+    <nd ref='-39774' />
+    <nd ref='-39740' />
+    <nd ref='-39772' />
+    <nd ref='-39742' />
+    <nd ref='-39744' />
+    <nd ref='-39752' />
+    <nd ref='-39736' />
+  </way>
+  <way id='-39826' action='modify' visible='true'>
+    <nd ref='-39746' />
+    <nd ref='-39748' />
+    <nd ref='-39750' />
+    <nd ref='-39746' />
+  </way>
+  <way id='-39828' action='modify' visible='true'>
+    <nd ref='-39754' />
+    <nd ref='-39756' />
+    <nd ref='-39955' />
+    <nd ref='-39776' />
+    <nd ref='-39758' />
+    <nd ref='-39760' />
+    <nd ref='-39762' />
+    <nd ref='-39790' />
+    <nd ref='-39754' />
+  </way>
+  <way id='-39830' action='modify' visible='true'>
+    <nd ref='-39764' />
+    <nd ref='-39778' />
+    <nd ref='-39969' />
+    <nd ref='-39766' />
+    <nd ref='-39768' />
+    <nd ref='-39770' />
+    <nd ref='-39764' />
+  </way>
+  <way id='-39832' action='modify' visible='true'>
+    <nd ref='-39780' />
+    <nd ref='-39782' />
+    <nd ref='-39784' />
+    <nd ref='-39786' />
+    <nd ref='-39788' />
+    <nd ref='-39780' />
+  </way>
+  <way id='-39834' action='modify' visible='true'>
+    <nd ref='-39792' />
+    <nd ref='-39794' />
+    <nd ref='-39796' />
+    <nd ref='-39798' />
+    <nd ref='-39792' />
+    <tag k='test' v='G' />
+  </way>
+  <way id='-39836' action='modify' visible='true'>
+    <nd ref='-39800' />
+    <nd ref='-39802' />
+    <nd ref='-39804' />
+    <nd ref='-39806' />
+    <nd ref='-39800' />
+    <tag k='test' v='H' />
+  </way>
+  <way id='-39838' action='modify' visible='true'>
+    <nd ref='-39808' />
+    <nd ref='-39810' />
+    <nd ref='-39812' />
+    <nd ref='-39814' />
+    <nd ref='-39808' />
+    <tag k='test' v='I' />
+  </way>
+  <relation id='-39840' action='modify' visible='true'>
+    <member type='way' ref='-39830' role='outer' />
+    <member type='way' ref='-39824' role='outer' />
+    <member type='way' ref='-39826' role='outer' />
+    <member type='way' ref='-39832' role='inner' />
+    <member type='way' ref='-39828' role='inner' />
+    <tag k='test' v='F' />
+    <tag k='type' v='multipolygon' />
+  </relation>
+  <relation id='-39933' action='modify' visible='true'>
+    <member type='way' ref='-39822' role='outer' />
+    <tag k='test' v='D' />
+    <tag k='type' v='multipolygon' />
+  </relation>
+</osm>
diff --git a/test/data/renderer/area-icon/reference.png b/test/data/renderer/area-icon/reference.png
new file mode 100644
index 0000000..ce8663c
Binary files /dev/null and b/test/data/renderer/area-icon/reference.png differ
diff --git a/test/data/renderer/area-icon/style.mapcss b/test/data/renderer/area-icon/style.mapcss
new file mode 100644
index 0000000..9c093be
--- /dev/null
+++ b/test/data/renderer/area-icon/style.mapcss
@@ -0,0 +1,18 @@
+canvas {
+    default-points: false;
+    default-lines: false;
+}
+
+area[test] {
+	icon-image: "info.png";
+	color: red;
+	width: 1;
+}
+
+area[test=H] {
+	icon-position: inside;
+}
+
+area[test=I] {
+	icon-position: line;
+}
diff --git a/test/data/renderer/area-text/data.osm b/test/data/renderer/area-text/data.osm
new file mode 100644
index 0000000..30c4b99
--- /dev/null
+++ b/test/data/renderer/area-text/data.osm
@@ -0,0 +1,252 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<osm version='0.6' upload='true' generator='JOSM'>
+  <node id='-34148' action='modify' visible='true' lat='0.1' lon='0.1'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34150' action='modify' visible='true' lat='0.1' lon='0.3'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34152' action='modify' visible='true' lat='0.1' lon='0.5'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34154' action='modify' visible='true' lat='0.1' lon='0.7'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34156' action='modify' visible='true' lat='0.1' lon='0.9'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34158' action='modify' visible='true' lat='0.3' lon='0.1'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34160' action='modify' visible='true' lat='0.3' lon='0.3'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34162' action='modify' visible='true' lat='0.3' lon='0.5'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34164' action='modify' visible='true' lat='0.3' lon='0.7'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34166' action='modify' visible='true' lat='0.5' lon='0.1'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34168' action='modify' visible='true' lat='0.5' lon='0.3'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34170' action='modify' visible='true' lat='0.5' lon='0.5'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34172' action='modify' visible='true' lat='0.7' lon='0.1'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34174' action='modify' visible='true' lat='0.7' lon='0.3'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34176' action='modify' visible='true' lat='0.7' lon='0.5'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34178' action='modify' visible='true' lat='0.9' lon='0.1'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34180' action='modify' visible='true' lat='0.9' lon='0.3'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34182' action='modify' visible='true' lat='0.9' lon='0.5'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34184' action='modify' visible='true' lat='0.19089711749' lon='0.44427860697'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34186' action='modify' visible='true' lat='0.17696341277' lon='0.41053111249'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34188' action='modify' visible='true' lat='0.19885727044' lon='0.36733001658'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34190' action='modify' visible='true' lat='0.17696341277' lon='0.30584194031'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34192' action='modify' visible='true' lat='0.21743094548' lon='0.25058043118'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34194' action='modify' visible='true' lat='0.14086383768' lon='0.21739763968'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34196' action='modify' visible='true' lat='0.22539108504' lon='0.17097844113'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34198' action='modify' visible='true' lat='0.1537496908' lon='0.15505804312'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34200' action='modify' visible='true' lat='0.14578951899' lon='0.09668325041'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34202' action='modify' visible='true' lat='0.76386024966' lon='0.67541515401'>
+    <tag k='test' v='yes' />
+  </node>
+  <node id='-34204' action='modify' visible='true' lat='0.43765938366' lon='0.90331674959' />
+  <node id='-34206' action='modify' visible='true' lat='0.4986855358' lon='0.8688225539' />
+  <node id='-34208' action='modify' visible='true' lat='0.53632910737' lon='0.62553897181' />
+  <node id='-34210' action='modify' visible='true' lat='0.37132604871' lon='0.72819237148' />
+  <node id='-34212' action='modify' visible='true' lat='0.283765299' lon='0.83698175788' />
+  <node id='-34214' action='modify' visible='true' lat='0.36601935924' lon='0.92189054726' />
+  <node id='-34216' action='modify' visible='true' lat='0.27049845588' lon='0.88739635158' />
+  <node id='-34218' action='modify' visible='true' lat='0.27688757429' lon='0.96737472108' />
+  <node id='-34220' action='modify' visible='true' lat='0.41489758295' lon='0.89350535698' />
+  <node id='-34222' action='modify' visible='true' lat='0.42399111908' lon='0.87983291331' />
+  <node id='-34224' action='modify' visible='true' lat='0.46911439058' lon='0.86088056318' />
+  <node id='-34226' action='modify' visible='true' lat='0.46601671054' lon='0.7767827529' />
+  <node id='-34228' action='modify' visible='true' lat='0.40316611708' lon='0.7679933665' />
+  <node id='-34230' action='modify' visible='true' lat='0.35009927216' lon='0.81044776119' />
+  <node id='-34232' action='modify' visible='true' lat='0.40233185362' lon='0.86268554891' />
+  <node id='-34234' action='modify' visible='true' lat='0.45738236685' lon='0.79680356986' />
+  <node id='-34236' action='modify' visible='true' lat='0.42094511989' lon='0.78645900634' />
+  <node id='-34238' action='modify' visible='true' lat='0.36803790029' lon='0.81936589145' />
+  <node id='-34240' action='modify' visible='true' lat='0.39305027505' lon='0.62155887231' />
+  <node id='-34242' action='modify' visible='true' lat='0.55622870027' lon='0.76616915423' />
+  <node id='-34244' action='modify' visible='true' lat='0.50316297662' lon='0.80729684909' />
+  <node id='-34246' action='modify' visible='true' lat='0.44655278945' lon='0.85907557745' />
+  <node id='-34248' action='modify' visible='true' lat='0.49498677212' lon='0.69043910584' />
+  <node id='-34250' action='modify' visible='true' lat='0.49366012166' lon='0.64798471115' />
+  <node id='-34252' action='modify' visible='true' lat='0.42218618256' lon='0.64789224737' />
+  <node id='-34254' action='modify' visible='true' lat='0.40344730686' lon='0.68247890683' />
+  <node id='-34256' action='modify' visible='true' lat='0.42489358718' lon='0.74265399805' />
+  <node id='-34258' action='modify' visible='true' lat='0.35269582512' lon='0.85366062027' />
+  <node id='-34260' action='modify' visible='true' lat='0.84867145523' lon='0.67767451187' />
+  <node id='-34262' action='modify' visible='true' lat='0.85228102899' lon='0.70835926923' />
+  <node id='-34264' action='modify' visible='true' lat='0.76023588083' lon='0.70474929778' />
+  <node id='-34266' action='modify' visible='true' lat='0.68082279503' lon='0.65420969742' />
+  <node id='-34268' action='modify' visible='true' lat='0.62848162751' lon='0.65420969742' />
+  <node id='-34270' action='modify' visible='true' lat='0.63028650434' lon='0.8852478705' />
+  <node id='-34272' action='modify' visible='true' lat='0.68443251028' lon='0.88344288477' />
+  <node id='-34274' action='modify' visible='true' lat='0.81849546819' lon='0.74625845774' />
+  <node id='-34276' action='modify' visible='true' lat='0.81398346177' lon='0.74603283452' />
+  <node id='-34278' action='modify' visible='true' lat='0.81454746285' lon='0.87170496578' />
+  <node id='-34280' action='modify' visible='true' lat='0.81905946864' lon='0.87170496578' />
+  <way id='-34282' action='modify' visible='true'>
+    <nd ref='-34182' />
+    <nd ref='-34180' />
+    <nd ref='-34178' />
+    <nd ref='-34172' />
+    <nd ref='-34174' />
+    <nd ref='-34176' />
+    <nd ref='-34182' />
+    <tag k='name' v='abcdef' />
+    <tag k='test' v='A' />
+  </way>
+  <way id='-34284' action='modify' visible='true'>
+    <nd ref='-34166' />
+    <nd ref='-34168' />
+    <nd ref='-34162' />
+    <nd ref='-34170' />
+    <nd ref='-34160' />
+    <nd ref='-34158' />
+    <nd ref='-34166' />
+    <tag k='name' v='01345678901' />
+    <tag k='test' v='B' />
+  </way>
+  <way id='-34286' action='modify' visible='true'>
+    <nd ref='-34148' />
+    <nd ref='-34150' />
+    <nd ref='-34152' />
+    <nd ref='-34184' />
+    <nd ref='-34186' />
+    <nd ref='-34188' />
+    <nd ref='-34190' />
+    <nd ref='-34192' />
+    <nd ref='-34194' />
+    <nd ref='-34196' />
+    <nd ref='-34198' />
+    <nd ref='-34200' />
+    <nd ref='-34148' />
+    <tag k='name' v='013456789012' />
+    <tag k='test' v='C' />
+  </way>
+  <way id='-34288' action='modify' visible='true'>
+    <nd ref='-34154' />
+    <nd ref='-34164' />
+    <nd ref='-34156' />
+    <nd ref='-34154' />
+    <tag k='name' v='abcde' />
+    <tag k='test' v='D' />
+  </way>
+  <way id='-34290' action='modify' visible='true'>
+    <nd ref='-34204' />
+    <nd ref='-34206' />
+    <nd ref='-34242' />
+    <nd ref='-34208' />
+    <nd ref='-34240' />
+    <nd ref='-34210' />
+    <nd ref='-34212' />
+    <nd ref='-34220' />
+    <nd ref='-34204' />
+  </way>
+  <way id='-34292' action='modify' visible='true'>
+    <nd ref='-34214' />
+    <nd ref='-34216' />
+    <nd ref='-34218' />
+    <nd ref='-34214' />
+  </way>
+  <way id='-34294' action='modify' visible='true'>
+    <nd ref='-34222' />
+    <nd ref='-34224' />
+    <nd ref='-34244' />
+    <nd ref='-34226' />
+    <nd ref='-34228' />
+    <nd ref='-34230' />
+    <nd ref='-34258' />
+    <nd ref='-34222' />
+  </way>
+  <way id='-34296' action='modify' visible='true'>
+    <nd ref='-34232' />
+    <nd ref='-34246' />
+    <nd ref='-34234' />
+    <nd ref='-34236' />
+    <nd ref='-34238' />
+    <nd ref='-34232' />
+  </way>
+  <way id='-34298' action='modify' visible='true'>
+    <nd ref='-34248' />
+    <nd ref='-34250' />
+    <nd ref='-34252' />
+    <nd ref='-34254' />
+    <nd ref='-34256' />
+    <nd ref='-34248' />
+  </way>
+  <way id='-34300' action='modify' visible='true'>
+    <nd ref='-34202' />
+    <nd ref='-34260' />
+    <nd ref='-34262' />
+    <nd ref='-34264' />
+    <nd ref='-34202' />
+    <tag k='name' v='0123456789' />
+    <tag k='test' v='E' />
+  </way>
+  <way id='-34302' action='modify' visible='true'>
+    <nd ref='-34266' />
+    <nd ref='-34268' />
+    <nd ref='-34270' />
+    <nd ref='-34272' />
+    <nd ref='-34266' />
+    <tag k='test' v='G' />
+  </way>
+  <way id='-34304' action='modify' visible='true'>
+    <nd ref='-34278' />
+    <nd ref='-34280' />
+    <nd ref='-34274' />
+    <nd ref='-34276' />
+    <nd ref='-34278' />
+    <tag k='name' v='0123456789' />
+    <tag k='test' v='E' />
+  </way>
+  <relation id='-34306' action='modify' visible='true'>
+    <member type='way' ref='-34296' role='outer' />
+    <member type='way' ref='-34290' role='outer' />
+    <member type='way' ref='-34292' role='outer' />
+    <member type='way' ref='-34298' role='inner' />
+    <member type='way' ref='-34294' role='inner' />
+    <tag k='name' v='ab' />
+    <tag k='test' v='F' />
+    <tag k='type' v='multipolygon' />
+  </relation>
+</osm>
diff --git a/test/data/renderer/area-text/reference.png b/test/data/renderer/area-text/reference.png
new file mode 100644
index 0000000..be40bdb
Binary files /dev/null and b/test/data/renderer/area-text/reference.png differ
diff --git a/test/data/renderer/area-text/style.mapcss b/test/data/renderer/area-text/style.mapcss
new file mode 100644
index 0000000..a859d36
--- /dev/null
+++ b/test/data/renderer/area-text/style.mapcss
@@ -0,0 +1,17 @@
+canvas {
+    default-points: false;
+    default-lines: false;
+}
+
+area[test] {
+	text: "name";
+	text-color: blue;
+	text-position: center;
+	font-family: "DejaVu Sans";
+	color: red;
+	width: 1;
+}
+
+area[test=H] {
+	text: eval("");
+}
diff --git a/test/data/renderer/node-shapes/reference.png b/test/data/renderer/node-shapes/reference.png
index c074db4..59728d9 100644
Binary files a/test/data/renderer/node-shapes/reference.png and b/test/data/renderer/node-shapes/reference.png differ
diff --git a/test/data/renderer/node-text/data.osm b/test/data/renderer/node-text/data.osm
new file mode 100644
index 0000000..6c212e1
--- /dev/null
+++ b/test/data/renderer/node-text/data.osm
@@ -0,0 +1,82 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<osm version='0.6' upload='true' generator='JOSM'>
+  <node id='-30552' action='modify' visible='true' lat='0.1' lon='0.1' >
+    <tag k='test' v='n21' />
+  </node>
+  <node id='-30554' action='modify' visible='true' lat='0.1' lon='0.3' >
+    <tag k='test' v='n22' />
+  </node>
+  <node id='-30556' action='modify' visible='true' lat='0.1' lon='0.5' >
+    <tag k='test' v='n23' />
+    <tag k='name' v='Test' />
+  </node>
+  <node id='-30558' action='modify' visible='true' lat='0.1' lon='0.7' >
+    <tag k='test' v='n24' />
+    <tag k='ref' v='Test' />
+  </node>
+  <node id='-30560' action='modify' visible='true' lat='0.1' lon='0.9' >
+    <tag k='test' v='n25' />
+  </node>
+  <node id='-30562' action='modify' visible='true' lat='0.3' lon='0.1' >
+    <tag k='test' v='n16' />
+  </node>
+  <node id='-30564' action='modify' visible='true' lat='0.3' lon='0.3' >
+    <tag k='test' v='n17' />
+  </node>
+  <node id='-30566' action='modify' visible='true' lat='0.3' lon='0.5' >
+    <tag k='test' v='n18' />
+  </node>
+  <node id='-30568' action='modify' visible='true' lat='0.3' lon='0.7' >
+    <tag k='test' v='n19' />
+    <tag k='highlight' v='yes' />
+  </node>
+  <node id='-30570' action='modify' visible='true' lat='0.3' lon='0.9' >
+    <tag k='test' v='n20' />
+    <tag k='disabled' v='yes' />
+  </node>
+  <node id='-30572' action='modify' visible='true' lat='0.5' lon='0.1' >
+    <tag k='test' v='n11' />
+  </node>
+  <node id='-30574' action='modify' visible='true' lat='0.5' lon='0.3' >
+    <tag k='test' v='n12' />
+  </node>
+  <node id='-30576' action='modify' visible='true' lat='0.5' lon='0.5' >
+    <tag k='test' v='n13' />
+  </node>
+  <node id='-30578' action='modify' visible='true' lat='0.5' lon='0.7' >
+    <tag k='test' v='n14' />
+  </node>
+  <node id='-30580' action='modify' visible='true' lat='0.5' lon='0.9' >
+    <tag k='test' v='n15' />
+  </node>
+  <node id='-30582' action='modify' visible='true' lat='0.7' lon='0.1' >
+    <tag k='test' v='n6' />
+  </node>
+  <node id='-30584' action='modify' visible='true' lat='0.7' lon='0.3' >
+    <tag k='test' v='n7' />
+  </node>
+  <node id='-30586' action='modify' visible='true' lat='0.7' lon='0.5' >
+    <tag k='test' v='n8' />
+  </node>
+  <node id='-30588' action='modify' visible='true' lat='0.7' lon='0.7' >
+    <tag k='test' v='n9' />
+  </node>
+  <node id='-30590' action='modify' visible='true' lat='0.7' lon='0.9' >
+    <tag k='test' v='n10' />
+  </node>
+  <node id='-30592' action='modify' visible='true' lat='0.9' lon='0.1' >
+    <tag k='test' v='n1' />
+  </node>
+  <node id='-30594' action='modify' visible='true' lat='0.9' lon='0.3' >
+    <tag k='test' v='n2' />
+  </node>
+  <node id='-30596' action='modify' visible='true' lat='0.9' lon='0.5' >
+    <tag k='test' v='n3' />
+  </node>
+  <node id='-30598' action='modify' visible='true' lat='0.9' lon='0.7' >
+    <tag k='test' v='n4' />
+  </node>
+  <node id='-30600' action='modify' visible='true' lat='0.9' lon='0.9' >
+    <tag k='test' v='n5' />
+  </node>
+</osm>
diff --git a/test/data/renderer/node-text/reference.png b/test/data/renderer/node-text/reference.png
new file mode 100644
index 0000000..9456c24
Binary files /dev/null and b/test/data/renderer/node-text/reference.png differ
diff --git a/test/data/renderer/node-text/style.mapcss b/test/data/renderer/node-text/style.mapcss
new file mode 100644
index 0000000..e0bc3bc
--- /dev/null
+++ b/test/data/renderer/node-text/style.mapcss
@@ -0,0 +1,142 @@
+canvas {
+    default-points: false;
+    default-lines: false;
+}
+
+node[test] {
+	symbol-shape: circle;
+	symbol-size: 5;
+	symbol-fill-color: #8888ff;
+	text-color: red;
+	font-family: DejaVu Sans;
+	_match: regexp_match("n(.+)", tag("test"));
+	text: eval(concat("Test ", get(prop("_match"),1)));
+}
+
+/* Anchor position */
+node[test=n1] {
+	text-anchor-horizontal: center; 
+	text-anchor-vertical: center; 
+}
+
+node[test=n2] {
+	text-anchor-horizontal: left;
+	text-anchor-vertical: center;
+	text-color: green;
+}
+
+node[test=n3] {
+	text-anchor-horizontal: right;
+	text-anchor-vertical: center;
+	text-color: rgba(0.1, 1.0, 0.1, 0.5);
+}
+
+node[test=n4] {
+	text-anchor-horizontal: center;
+	text-anchor-vertical: top;
+	text-color: rgba(0.1, 1.0, 0.1, 1.0);
+	text-opacity: 0.5;
+}
+
+node[test=n5] {
+	text-anchor-horizontal: center;
+	text-anchor-vertical: bottom;
+	text-color: rgba(0.1, 1.0, 0.1, 0.8);
+	text-opacity: 0.8;
+}
+
+node[test=n6] {
+	text-anchor-horizontal: center; 
+	text-anchor-vertical: above; 
+}
+
+node[test=n7] {
+	text-anchor-horizontal: center; 
+	text-anchor-vertical: below; 
+}
+
+node[test=n8] {
+	text-anchor-horizontal: center; 
+	text-anchor-vertical: below; 
+	text-offset-x: -10;
+	text-offset-y: -10;
+}
+
+node[test=n9] {
+	text-anchor-horizontal: left; 
+	text-anchor-vertical: top; 
+	text-offset-x: 5;
+	text-offset: 10; /* interpreted as offset-y */
+}
+
+node[test=n10] {
+	text-offset: list(2, -6);
+}
+
+/* Halo */
+
+node[test=n11] {
+	text-halo-radius: 1;
+	text-halo-color: green;
+}
+
+node[test=n12] {
+	text-halo-radius: 5;
+	text-halo-opacity: 0.5;
+}
+
+node[test=n13] {
+	text-halo-radius: 5;
+	text-halo-color: rgba(0, 0, 1.0, 0.4);
+}
+
+node[test=n14] {
+	text-halo-radius: 5;
+	text-halo-color: rgba(0, 0, 1.0, 0.4);
+	text-halo-opacity: 0.5;
+}
+
+node[test=n15] {
+	/* ignored */
+	text-halo-radius: -2;
+}
+
+/* Text style */
+
+node[test=n16] {
+	 font-size: 10;
+	 font-style: italic;
+}
+
+node[test=n17] {
+	 font-size: 5;
+	 text-color: green;
+}
+
+node[test=n18] {
+	 font-size: 12;
+	 font-weight: bold;
+}
+
+/* 19, 20: hover/disabled */
+
+/* Text values */
+node[test=n21] {
+	text: test;
+}
+
+node[test=n22] {
+	text: unused_key;
+}
+
+node[test=n23] {
+	text: auto;
+}
+
+node[test=n24] {
+	text: auto;
+}
+
+node[test=n25] {
+	text: auto;
+}
\ No newline at end of file
diff --git a/test/data/renderer/order/data.osm b/test/data/renderer/order/data.osm
new file mode 100644
index 0000000..3faa8fe
--- /dev/null
+++ b/test/data/renderer/order/data.osm
@@ -0,0 +1,606 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<osm version='0.6' upload='true' generator='JOSM'>
+  <node id='-38186' action='modify' visible='true' lat='0.08142622568' lon='0.07081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38188' action='modify' visible='true' lat='0.08142622568' lon='0.27081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38192' action='modify' visible='true' lat='0.08142622568' lon='0.67081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38194' action='modify' visible='true' lat='0.08142622568' lon='0.87081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38196' action='modify' visible='true' lat='0.28142644149' lon='0.07081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38198' action='modify' visible='true' lat='0.28142644149' lon='0.27081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38200' action='modify' visible='true' lat='0.28142644149' lon='0.47081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38202' action='modify' visible='true' lat='0.28142644149' lon='0.67081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38204' action='modify' visible='true' lat='0.28142644149' lon='0.87081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38206' action='modify' visible='true' lat='0.48142688361' lon='0.07081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38208' action='modify' visible='true' lat='0.48142688361' lon='0.27081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38210' action='modify' visible='true' lat='0.48142688361' lon='0.47081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38212' action='modify' visible='true' lat='0.48142688361' lon='0.67081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38214' action='modify' visible='true' lat='0.48142688361' lon='0.87081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38216' action='modify' visible='true' lat='0.68142755204' lon='0.07081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38218' action='modify' visible='true' lat='0.68142755204' lon='0.27081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38220' action='modify' visible='true' lat='0.68142755204' lon='0.47081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38222' action='modify' visible='true' lat='0.68142755204' lon='0.67081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38224' action='modify' visible='true' lat='0.68142755204' lon='0.87081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38226' action='modify' visible='true' lat='0.88142844677' lon='0.07081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38228' action='modify' visible='true' lat='0.88142844677' lon='0.27081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38230' action='modify' visible='true' lat='0.88142844677' lon='0.47081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38232' action='modify' visible='true' lat='0.88142844677' lon='0.67081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38234' action='modify' visible='true' lat='0.88142844677' lon='0.87081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38434' action='modify' visible='true' lat='0.47877357709' lon='0.57164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38435' action='modify' visible='true' lat='0.47877357709' lon='0.77164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38436' action='modify' visible='true' lat='0.47877357709' lon='0.97164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38437' action='modify' visible='true' lat='0.6787743393' lon='0.17164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38438' action='modify' visible='true' lat='0.6787743393' lon='0.37164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38439' action='modify' visible='true' lat='0.6787743393' lon='0.57164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38440' action='modify' visible='true' lat='0.6787743393' lon='0.77164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38441' action='modify' visible='true' lat='0.6787743393' lon='0.97164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38442' action='modify' visible='true' lat='0.87877536013' lon='0.17164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38443' action='modify' visible='true' lat='0.87877536013' lon='0.37164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38444' action='modify' visible='true' lat='0.87877536013' lon='0.57164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38445' action='modify' visible='true' lat='0.87877536013' lon='0.77164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38446' action='modify' visible='true' lat='0.87877536013' lon='0.97164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38447' action='modify' visible='true' lat='0.07877282861' lon='0.17164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38448' action='modify' visible='true' lat='0.07877282861' lon='0.37164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38450' action='modify' visible='true' lat='0.07877282861' lon='0.77164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38451' action='modify' visible='true' lat='0.07877282861' lon='0.97164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38452' action='modify' visible='true' lat='0.27877307353' lon='0.17164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38453' action='modify' visible='true' lat='0.27877307353' lon='0.37164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38454' action='modify' visible='true' lat='0.27877307353' lon='0.57164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38455' action='modify' visible='true' lat='0.27877307353' lon='0.77164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38456' action='modify' visible='true' lat='0.27877307353' lon='0.97164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38457' action='modify' visible='true' lat='0.47877357709' lon='0.17164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38458' action='modify' visible='true' lat='0.47877357709' lon='0.37164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38509' action='modify' visible='true' lat='0.57959845092' lon='0.57164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38510' action='modify' visible='true' lat='0.57959845092' lon='0.77164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38511' action='modify' visible='true' lat='0.57959845092' lon='0.97164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38512' action='modify' visible='true' lat='0.77959534823' lon='0.17164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38513' action='modify' visible='true' lat='0.77959534823' lon='0.37164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38514' action='modify' visible='true' lat='0.77959534823' lon='0.57164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38515' action='modify' visible='true' lat='0.77959534823' lon='0.77164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38516' action='modify' visible='true' lat='0.77959534823' lon='0.97164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38517' action='modify' visible='true' lat='0.18225513313' lon='0.07081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38518' action='modify' visible='true' lat='0.97959127571' lon='0.17164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38519' action='modify' visible='true' lat='0.97959127571' lon='0.37164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38520' action='modify' visible='true' lat='0.97959127571' lon='0.57164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38521' action='modify' visible='true' lat='0.18225513313' lon='0.27081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38522' action='modify' visible='true' lat='0.97959127571' lon='0.77164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38524' action='modify' visible='true' lat='0.97959127571' lon='0.97164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38525' action='modify' visible='true' lat='0.17960174669' lon='0.17164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38526' action='modify' visible='true' lat='0.17960174669' lon='0.37164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38527' action='modify' visible='true' lat='0.18225513313' lon='0.67081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38529' action='modify' visible='true' lat='0.17960174669' lon='0.77164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38530' action='modify' visible='true' lat='0.18225513313' lon='0.87081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38531' action='modify' visible='true' lat='0.17960174669' lon='0.97164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38532' action='modify' visible='true' lat='0.38225392478' lon='0.07081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38533' action='modify' visible='true' lat='0.37960058375' lon='0.17164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38534' action='modify' visible='true' lat='0.37960058375' lon='0.37164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38535' action='modify' visible='true' lat='0.38225392478' lon='0.27081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38536' action='modify' visible='true' lat='0.37960058375' lon='0.57164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38537' action='modify' visible='true' lat='0.37960058375' lon='0.77164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38538' action='modify' visible='true' lat='0.37960058375' lon='0.97164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38539' action='modify' visible='true' lat='0.38225392478' lon='0.47081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38540' action='modify' visible='true' lat='0.57959845092' lon='0.17164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38541' action='modify' visible='true' lat='0.57959845092' lon='0.37164179104'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38542' action='modify' visible='true' lat='0.38225392478' lon='0.67081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38543' action='modify' visible='true' lat='0.38225392478' lon='0.87081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38544' action='modify' visible='true' lat='0.58225171421' lon='0.07081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38545' action='modify' visible='true' lat='0.58225171421' lon='0.27081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38546' action='modify' visible='true' lat='0.58225171421' lon='0.47081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38547' action='modify' visible='true' lat='0.58225171421' lon='0.67081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38548' action='modify' visible='true' lat='0.58225171421' lon='0.87081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38549' action='modify' visible='true' lat='0.78224850144' lon='0.07081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38550' action='modify' visible='true' lat='0.78224850144' lon='0.27081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38551' action='modify' visible='true' lat='0.78224850144' lon='0.47081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38552' action='modify' visible='true' lat='0.78224850144' lon='0.67081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38553' action='modify' visible='true' lat='0.78224850144' lon='0.87081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38554' action='modify' visible='true' lat='0.98224428653' lon='0.07081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38555' action='modify' visible='true' lat='0.98224428653' lon='0.27081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38556' action='modify' visible='true' lat='0.98224428653' lon='0.47081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38557' action='modify' visible='true' lat='0.98224428653' lon='0.67081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-38558' action='modify' visible='true' lat='0.98224428653' lon='0.87081260365'>
+    <tag k='color' v='EndNode' />
+  </node>
+  <node id='-39907' action='modify' visible='true' lat='0.15905647036' lon='0.48938640133' />
+  <node id='-39908' action='modify' visible='true' lat='0.1298691671' lon='0.48938640133'>
+    <tag k='color' v='N' />
+  </node>
+  <node id='-39909' action='modify' visible='true' lat='0.16170985963' lon='0.57694859038'>
+    <tag k='color' v='N' />
+    <tag k='z-index' v='-1' />
+  </node>
+  <node id='-39910' action='modify' visible='true' lat='0.1298691671' lon='0.57694859038' />
+  <way id='-38559' action='modify' visible='true'>
+    <nd ref='-38186' />
+    <nd ref='-38525' />
+    <tag k='color' v='B' />
+    <tag k='major-z-index' v='0.02' />
+  </way>
+  <way id='-38566' action='modify' visible='true'>
+    <nd ref='-38447' />
+    <nd ref='-38517' />
+    <tag k='color' v='A' />
+    <tag k='major-z-index' v='0.01' />
+  </way>
+  <way id='-38567' action='modify' visible='true'>
+    <nd ref='-38196' />
+    <nd ref='-38533' />
+    <tag k='color' v='B' />
+    <tag k='test' v='object-z-index-1b' />
+  </way>
+  <way id='-38576' action='modify' visible='true'>
+    <nd ref='-38452' />
+    <nd ref='-38532' />
+    <tag k='color' v='A' />
+    <tag k='test' v='object-z-index-1' />
+  </way>
+  <way id='-38577' action='modify' visible='true'>
+    <nd ref='-38206' />
+    <nd ref='-38540' />
+    <tag k='color' v='B' />
+  </way>
+  <way id='-38578' action='modify' visible='true'>
+    <nd ref='-38457' />
+    <nd ref='-38544' />
+    <tag k='color' v='A' />
+    <tag k='selected' v='yes' />
+  </way>
+  <way id='-38579' action='modify' visible='true'>
+    <nd ref='-38216' />
+    <nd ref='-38512' />
+    <tag k='color' v='B' />
+    <tag k='z-index' v='2' />
+  </way>
+  <way id='-38582' action='modify' visible='true'>
+    <nd ref='-38437' />
+    <nd ref='-38549' />
+    <tag k='color' v='A' />
+    <tag k='z-index' v='1' />
+  </way>
+  <way id='-38583' action='modify' visible='true'>
+    <nd ref='-38226' />
+    <nd ref='-38518' />
+    <tag k='color' v='B' />
+    <tag k='disabled' v='yes' />
+  </way>
+  <way id='-38588' action='modify' visible='true'>
+    <nd ref='-38442' />
+    <nd ref='-38554' />
+    <tag k='color' v='A' />
+  </way>
+  <way id='-38631' action='modify' visible='true'>
+    <nd ref='-38228' />
+    <nd ref='-38519' />
+    <tag k='color' v='B' />
+    <tag k='disabled' v='yes' />
+    <tag k='highlight' v='yes' />
+  </way>
+  <way id='-38632' action='modify' visible='true'>
+    <nd ref='-38443' />
+    <nd ref='-38555' />
+    <tag k='color' v='A' />
+    <tag k='highlight' v='yes' />
+  </way>
+  <way id='-38664' action='modify' visible='true'>
+    <nd ref='-38550' />
+    <nd ref='-38438' />
+    <tag k='color' v='A' />
+    <tag k='object-z-index' v='1' />
+  </way>
+  <way id='-38665' action='modify' visible='true'>
+    <nd ref='-38513' />
+    <nd ref='-38218' />
+    <tag k='color' v='B' />
+    <tag k='object-z-index' v='2' />
+  </way>
+  <way id='-38668' action='modify' visible='true'>
+    <nd ref='-38545' />
+    <nd ref='-38458' />
+    <tag k='color' v='A' />
+    <tag k='selected' v='yes' />
+  </way>
+  <way id='-38669' action='modify' visible='true'>
+    <nd ref='-38541' />
+    <nd ref='-38208' />
+    <tag k='color' v='B' />
+    <tag k='member_of_selected' v='yes' />
+  </way>
+  <way id='-38670' action='modify' visible='true'>
+    <nd ref='-38535' />
+    <nd ref='-38453' />
+    <tag k='color' v='A' />
+    <tag k='test' v='object-z-index-2b' />
+  </way>
+  <way id='-38680' action='modify' visible='true'>
+    <nd ref='-38534' />
+    <nd ref='-38198' />
+    <tag k='color' v='B' />
+    <tag k='test' v='object-z-index-2' />
+  </way>
+  <way id='-38681' action='modify' visible='true'>
+    <nd ref='-38521' />
+    <nd ref='-38448' />
+    <tag k='color' v='A' />
+  </way>
+  <way id='-38688' action='modify' visible='true'>
+    <nd ref='-38526' />
+    <nd ref='-38188' />
+    <tag k='color' v='B' />
+  </way>
+  <way id='-38689' action='modify' visible='true'>
+    <nd ref='-38556' />
+    <nd ref='-38444' />
+    <tag k='color' v='A' />
+    <tag k='disabled' v='yes' />
+    <tag k='z-index' v='2' />
+  </way>
+  <way id='-38690' action='modify' visible='true'>
+    <nd ref='-38520' />
+    <nd ref='-38230' />
+    <tag k='color' v='B' />
+    <tag k='z-index' v='1' />
+  </way>
+  <way id='-38691' action='modify' visible='true'>
+    <nd ref='-38551' />
+    <nd ref='-38439' />
+    <tag k='color' v='A' />
+    <tag k='major-z-index' v='1' />
+  </way>
+  <way id='-38694' action='modify' visible='true'>
+    <nd ref='-38514' />
+    <nd ref='-38220' />
+    <tag k='color' v='B' />
+    <tag k='major-z-index' v='2' />
+  </way>
+  <way id='-38695' action='modify' visible='true'>
+    <nd ref='-38546' />
+    <nd ref='-38434' />
+    <tag k='color' v='A' />
+    <tag k='highlight' v='yes' />
+    <tag k='member_of_selected' v='yes' />
+  </way>
+  <way id='-38704' action='modify' visible='true'>
+    <nd ref='-38539' />
+    <nd ref='-38454' />
+    <tag k='color' v='A' />
+    <tag k='z-index' v='9999.99' />
+  </way>
+  <way id='-38709' action='modify' visible='true'>
+    <nd ref='-38200' />
+    <nd ref='-38536' />
+    <tag k='color' v='B' />
+    <tag k='z-index' v='1000.00' />
+  </way>
+  <way id='-38748' action='modify' visible='true'>
+    <nd ref='-38509' />
+    <nd ref='-38210' />
+    <tag k='color' v='A' />
+    <tag k='highlight' v='yes' />
+    <tag k='outermember_of_selected' v='yes' />
+  </way>
+  <way id='-38755' action='modify' visible='true'>
+    <nd ref='-38527' />
+    <nd ref='-38450' />
+    <tag k='color' v='A' />
+    <tag k='z-index' v='-1' />
+  </way>
+  <way id='-38761' action='modify' visible='true'>
+    <nd ref='-38529' />
+    <nd ref='-38192' />
+    <tag k='color' v='B' />
+  </way>
+  <way id='-38762' action='modify' visible='true'>
+    <nd ref='-38537' />
+    <nd ref='-38202' />
+    <tag k='color' v='B' />
+    <tag k='z-index' v='0.02' />
+  </way>
+  <way id='-38768' action='modify' visible='true'>
+    <nd ref='-38542' />
+    <nd ref='-38455' />
+    <tag k='color' v='A' />
+    <tag k='z-index' v='0.01' />
+  </way>
+  <way id='-38770' action='modify' visible='true'>
+    <nd ref='-38547' />
+    <nd ref='-38435' />
+    <tag k='color' v='A' />
+    <tag k='outermember_of_selected' v='yes' />
+  </way>
+  <way id='-38773' action='modify' visible='true'>
+    <nd ref='-38510' />
+    <nd ref='-38212' />
+    <tag k='color' v='B' />
+    <tag k='selected' v='yes' />
+  </way>
+  <way id='-38774' action='modify' visible='true'>
+    <nd ref='-38515' />
+    <nd ref='-38222' />
+    <tag k='color' v='B' />
+    <tag k='major-z-index' v='1' />
+    <tag k='z-index' v='2' />
+  </way>
+  <way id='-38780' action='modify' visible='true'>
+    <nd ref='-38552' />
+    <nd ref='-38440' />
+    <tag k='color' v='A' />
+    <tag k='major-z-index' v='2' />
+    <tag k='z-index' v='1' />
+  </way>
+  <way id='-38781' action='modify' visible='true'>
+    <nd ref='-38557' />
+    <nd ref='-38445' />
+    <tag k='color' v='A' />
+    <tag k='disabled' v='yes' />
+    <tag k='z-index' v='1' />
+  </way>
+  <way id='-38786' action='modify' visible='true'>
+    <nd ref='-38522' />
+    <nd ref='-38232' />
+    <tag k='color' v='B' />
+    <tag k='z-index' v='2' />
+  </way>
+  <way id='-38787' action='modify' visible='true'>
+    <nd ref='-38558' />
+    <nd ref='-38446' />
+    <tag k='color' v='A' />
+    <tag k='disabled' v='yes' />
+    <tag k='z-index' v='2' />
+  </way>
+  <way id='-38788' action='modify' visible='true'>
+    <nd ref='-38524' />
+    <nd ref='-38234' />
+    <tag k='color' v='B' />
+    <tag k='disabled' v='yes' />
+    <tag k='z-index' v='1' />
+  </way>
+  <way id='-38789' action='modify' visible='true'>
+    <nd ref='-38553' />
+    <nd ref='-38441' />
+    <tag k='color' v='A' />
+    <tag k='object-z-index' v='1' />
+    <tag k='z-index' v='2' />
+  </way>
+  <way id='-38801' action='modify' visible='true'>
+    <nd ref='-38516' />
+    <nd ref='-38224' />
+    <tag k='color' v='B' />
+    <tag k='object-z-index' v='2' />
+    <tag k='z-index' v='1' />
+  </way>
+  <way id='-38802' action='modify' visible='true'>
+    <nd ref='-38548' />
+    <nd ref='-38436' />
+    <tag k='color' v='A' />
+    <tag k='disabled' v='yes' />
+    <tag k='highlight' v='yes' />
+    <tag k='selected' v='yes' />
+  </way>
+  <way id='-38803' action='modify' visible='true'>
+    <nd ref='-38456' />
+    <nd ref='-38543' />
+    <tag k='color' v='A' />
+    <tag k='major-z-index' v='9999.99' />
+  </way>
+  <way id='-38804' action='modify' visible='true'>
+    <nd ref='-38531' />
+    <nd ref='-38194' />
+    <tag k='color' v='B' />
+  </way>
+  <way id='-38812' action='modify' visible='true'>
+    <nd ref='-38530' />
+    <nd ref='-38451' />
+    <tag k='color' v='A' />
+    <tag k='z-index' v='1' />
+  </way>
+  <way id='-38825' action='modify' visible='true'>
+    <nd ref='-38204' />
+    <nd ref='-38538' />
+    <tag k='color' v='B' />
+    <tag k='major-z-index' v='1000.00' />
+  </way>
+  <way id='-38826' action='modify' visible='true'>
+    <nd ref='-38511' />
+    <nd ref='-38214' />
+    <tag k='color' v='A' />
+    <tag k='disabled' v='yes' />
+    <tag k='highlight' v='yes' />
+    <tag k='member_of_selected' v='yes' />
+  </way>
+  <relation id='-39474' action='modify' visible='true'>
+    <member type='way' ref='-38826' role='' />
+    <member type='way' ref='-38770' role='outer' />
+    <member type='way' ref='-38748' role='outer' />
+    <member type='way' ref='-38695' role='' />
+    <member type='way' ref='-38669' role='' />
+    <tag k='selected' v='yes' />
+    <tag k='type' v='multipolygon' />
+  </relation>
+</osm>
diff --git a/test/data/renderer/order/reference.png b/test/data/renderer/order/reference.png
new file mode 100644
index 0000000..87bc4f7
Binary files /dev/null and b/test/data/renderer/order/reference.png differ
diff --git a/test/data/renderer/order/style.mapcss b/test/data/renderer/order/style.mapcss
new file mode 100644
index 0000000..6a82d57
--- /dev/null
+++ b/test/data/renderer/order/style.mapcss
@@ -0,0 +1,83 @@
+canvas {
+    default-points: true;
+    default-lines: false;
+}
+
+way[color=A] {
+	color: blue;
+	fill-color: blue;
+	width: 5;
+}
+
+way[color=B] {
+	color: green;
+	fill-color: green;
+	width: 5;
+}
+
+way[color=A]:selected {
+}
+
+way[color=B]:selected {
+}
+
+node[color=EndNode] {
+	symbol-shape: circle;
+	symbol-size: 2;
+	symbol-fill-color: yellow;
+}
+
+node[color=N] {
+	symbol-shape: circle;
+	symbol-size: 20;
+	symbol-fill-color: blue;
+	major-z-index: 4.1;
+}
+
+way[z-index] {
+	z-index: eval(tag("z-index"));
+}
+
+way[test=object-z-index-1] {
+	object-z-index: 10.000;
+}
+
+way[test=object-z-index-1]::B {
+	object-z-index: 9.999;
+	color: yellow;
+	width: 5;
+}
+
+way[test=object-z-index-1b] {
+	object-z-index: 9.999;
+}
+
+way[test=object-z-index-1b]::B {
+	object-z-index: 10.000;
+	color: yellow;
+	width: 5;
+}
+
+way[test=object-z-index-2] {
+	object-z-index: 0.00;
+}
+
+way[test=object-z-index-2]::B {
+	object-z-index: 0.01;
+	color: yellow;
+	width: 5;
+}
+
+way[test=object-z-index-2b] {
+	object-z-index: 0.02;
+}
+
+way[test=object-z-index-2b]::B {
+	object-z-index: 0.01;
+	color: yellow;
+	width: 5;
+}
+
+way[major-z-index] {
+	major-z-index: eval(tag("major-z-index"));
+}
\ No newline at end of file
diff --git a/test/data/renderer/way-color/data.osm b/test/data/renderer/way-color/data.osm
new file mode 100644
index 0000000..fe110d2
--- /dev/null
+++ b/test/data/renderer/way-color/data.osm
@@ -0,0 +1,88 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<osm version='0.6' upload='true' generator='JOSM'>
+  <node id='-30552' action='modify' visible='true' lat='0.1' lon='0.1' />
+  <node id='-30554' action='modify' visible='true' lat='0.15' lon='0.3' />
+  <node id='-30556' action='modify' visible='true' lat='0.1' lon='0.5' />
+  <node id='-30558' action='modify' visible='true' lat='0.1' lon='0.7' />
+  <node id='-30560' action='modify' visible='true' lat='0.1' lon='0.9' />
+  <node id='-30562' action='modify' visible='true' lat='0.3' lon='0.1' />
+  <node id='-30564' action='modify' visible='true' lat='0.35' lon='0.3' />
+  <node id='-30566' action='modify' visible='true' lat='0.3' lon='0.5' />
+  <node id='-30568' action='modify' visible='true' lat='0.3' lon='0.7' />
+  <node id='-30570' action='modify' visible='true' lat='0.3' lon='0.9' />
+  <node id='-30572' action='modify' visible='true' lat='0.5' lon='0.1' />
+  <node id='-30574' action='modify' visible='true' lat='0.55' lon='0.3' />
+  <node id='-30576' action='modify' visible='true' lat='0.5' lon='0.5' />
+  <node id='-30578' action='modify' visible='true' lat='0.5' lon='0.7' />
+  <node id='-30580' action='modify' visible='true' lat='0.5' lon='0.9' />
+  <node id='-30582' action='modify' visible='true' lat='0.7' lon='0.1' />
+  <node id='-30584' action='modify' visible='true' lat='0.75' lon='0.3' />
+  <node id='-30586' action='modify' visible='true' lat='0.7' lon='0.5' />
+  <node id='-30588' action='modify' visible='true' lat='0.7' lon='0.7' />
+  <node id='-30590' action='modify' visible='true' lat='0.7' lon='0.9' />
+  <node id='-30592' action='modify' visible='true' lat='0.9' lon='0.1' />
+  <node id='-30594' action='modify' visible='true' lat='0.95' lon='0.3' />
+  <node id='-30596' action='modify' visible='true' lat='0.9' lon='0.5' />
+  <node id='-30598' action='modify' visible='true' lat='0.9' lon='0.7' />
+  <node id='-30600' action='modify' visible='true' lat='0.9' lon='0.9' />
+  <way id='-30626' action='modify' visible='true'>
+    <nd ref='-30600' />
+    <nd ref='-30598' />
+    <tag k='highlight' v='yes' />
+    <tag k='test' v='style5' />
+  </way>
+  <way id='-30629' action='modify' visible='true'>
+    <nd ref='-30590' />
+    <nd ref='-30588' />
+    <tag k='highlight' v='yes' />
+    <tag k='test' v='style4' />
+  </way>
+  <way id='-30630' action='modify' visible='true'>
+    <nd ref='-30580' />
+    <nd ref='-30578' />
+    <tag k='highlight' v='yes' />
+    <tag k='test' v='style3' />
+  </way>
+  <way id='-30631' action='modify' visible='true'>
+    <nd ref='-30570' />
+    <nd ref='-30568' />
+    <tag k='highlight' v='yes' />
+    <tag k='test' v='style2' />
+  </way>
+  <way id='-30632' action='modify' visible='true'>
+    <nd ref='-30560' />
+    <nd ref='-30558' />
+    <tag k='highlight' v='yes' />
+    <tag k='test' v='style1' />
+  </way>
+  <way id='-30638' action='modify' visible='true'>
+    <nd ref='-30596' />
+    <nd ref='-30594' />
+    <nd ref='-30592' />
+    <tag k='test' v='style5' />
+  </way>
+  <way id='-30640' action='modify' visible='true'>
+    <nd ref='-30586' />
+    <nd ref='-30584' />
+    <nd ref='-30582' />
+    <tag k='test' v='style4' />
+  </way>
+  <way id='-30642' action='modify' visible='true'>
+    <nd ref='-30576' />
+    <nd ref='-30574' />
+    <nd ref='-30572' />
+    <tag k='test' v='style3' />
+  </way>
+  <way id='-30644' action='modify' visible='true'>
+    <nd ref='-30566' />
+    <nd ref='-30564' />
+    <nd ref='-30562' />
+    <tag k='test' v='style2' />
+  </way>
+  <way id='-30646' action='modify' visible='true'>
+    <nd ref='-30556' />
+    <nd ref='-30554' />
+    <nd ref='-30552' />
+    <tag k='test' v='style1' />
+  </way>
+</osm>
diff --git a/test/data/renderer/way-color/reference.png b/test/data/renderer/way-color/reference.png
new file mode 100644
index 0000000..f446a99
Binary files /dev/null and b/test/data/renderer/way-color/reference.png differ
diff --git a/test/data/renderer/way-color/style.mapcss b/test/data/renderer/way-color/style.mapcss
new file mode 100644
index 0000000..7effa19
--- /dev/null
+++ b/test/data/renderer/way-color/style.mapcss
@@ -0,0 +1,30 @@
+canvas {
+    default-points: false;
+    default-lines: false;
+}
+
+way[test] {
+	width: 5;
+}
+
+way[test=style5] {
+	color: red;
+}
+
+way[test=style4] {
+	color: #1220ad;
+}
+
+way[test=style3] {
+	color: #1220ad80;
+}
+
+way[test=style2] {
+	color: #12ad20;
+	opacity: .5;
+}
+
+way[test=style1] {
+	color: rgba(0.0, 1.0, 0.0, 0.8);
+	opacity: .8;
+}
diff --git a/test/data/renderer/way-dashes/data.osm b/test/data/renderer/way-dashes/data.osm
new file mode 100644
index 0000000..fe110d2
--- /dev/null
+++ b/test/data/renderer/way-dashes/data.osm
@@ -0,0 +1,88 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<osm version='0.6' upload='true' generator='JOSM'>
+  <node id='-30552' action='modify' visible='true' lat='0.1' lon='0.1' />
+  <node id='-30554' action='modify' visible='true' lat='0.15' lon='0.3' />
+  <node id='-30556' action='modify' visible='true' lat='0.1' lon='0.5' />
+  <node id='-30558' action='modify' visible='true' lat='0.1' lon='0.7' />
+  <node id='-30560' action='modify' visible='true' lat='0.1' lon='0.9' />
+  <node id='-30562' action='modify' visible='true' lat='0.3' lon='0.1' />
+  <node id='-30564' action='modify' visible='true' lat='0.35' lon='0.3' />
+  <node id='-30566' action='modify' visible='true' lat='0.3' lon='0.5' />
+  <node id='-30568' action='modify' visible='true' lat='0.3' lon='0.7' />
+  <node id='-30570' action='modify' visible='true' lat='0.3' lon='0.9' />
+  <node id='-30572' action='modify' visible='true' lat='0.5' lon='0.1' />
+  <node id='-30574' action='modify' visible='true' lat='0.55' lon='0.3' />
+  <node id='-30576' action='modify' visible='true' lat='0.5' lon='0.5' />
+  <node id='-30578' action='modify' visible='true' lat='0.5' lon='0.7' />
+  <node id='-30580' action='modify' visible='true' lat='0.5' lon='0.9' />
+  <node id='-30582' action='modify' visible='true' lat='0.7' lon='0.1' />
+  <node id='-30584' action='modify' visible='true' lat='0.75' lon='0.3' />
+  <node id='-30586' action='modify' visible='true' lat='0.7' lon='0.5' />
+  <node id='-30588' action='modify' visible='true' lat='0.7' lon='0.7' />
+  <node id='-30590' action='modify' visible='true' lat='0.7' lon='0.9' />
+  <node id='-30592' action='modify' visible='true' lat='0.9' lon='0.1' />
+  <node id='-30594' action='modify' visible='true' lat='0.95' lon='0.3' />
+  <node id='-30596' action='modify' visible='true' lat='0.9' lon='0.5' />
+  <node id='-30598' action='modify' visible='true' lat='0.9' lon='0.7' />
+  <node id='-30600' action='modify' visible='true' lat='0.9' lon='0.9' />
+  <way id='-30626' action='modify' visible='true'>
+    <nd ref='-30600' />
+    <nd ref='-30598' />
+    <tag k='highlight' v='yes' />
+    <tag k='test' v='style5' />
+  </way>
+  <way id='-30629' action='modify' visible='true'>
+    <nd ref='-30590' />
+    <nd ref='-30588' />
+    <tag k='highlight' v='yes' />
+    <tag k='test' v='style4' />
+  </way>
+  <way id='-30630' action='modify' visible='true'>
+    <nd ref='-30580' />
+    <nd ref='-30578' />
+    <tag k='highlight' v='yes' />
+    <tag k='test' v='style3' />
+  </way>
+  <way id='-30631' action='modify' visible='true'>
+    <nd ref='-30570' />
+    <nd ref='-30568' />
+    <tag k='highlight' v='yes' />
+    <tag k='test' v='style2' />
+  </way>
+  <way id='-30632' action='modify' visible='true'>
+    <nd ref='-30560' />
+    <nd ref='-30558' />
+    <tag k='highlight' v='yes' />
+    <tag k='test' v='style1' />
+  </way>
+  <way id='-30638' action='modify' visible='true'>
+    <nd ref='-30596' />
+    <nd ref='-30594' />
+    <nd ref='-30592' />
+    <tag k='test' v='style5' />
+  </way>
+  <way id='-30640' action='modify' visible='true'>
+    <nd ref='-30586' />
+    <nd ref='-30584' />
+    <nd ref='-30582' />
+    <tag k='test' v='style4' />
+  </way>
+  <way id='-30642' action='modify' visible='true'>
+    <nd ref='-30576' />
+    <nd ref='-30574' />
+    <nd ref='-30572' />
+    <tag k='test' v='style3' />
+  </way>
+  <way id='-30644' action='modify' visible='true'>
+    <nd ref='-30566' />
+    <nd ref='-30564' />
+    <nd ref='-30562' />
+    <tag k='test' v='style2' />
+  </way>
+  <way id='-30646' action='modify' visible='true'>
+    <nd ref='-30556' />
+    <nd ref='-30554' />
+    <nd ref='-30552' />
+    <tag k='test' v='style1' />
+  </way>
+</osm>
diff --git a/test/data/renderer/way-dashes/reference.png b/test/data/renderer/way-dashes/reference.png
new file mode 100644
index 0000000..f109f97
Binary files /dev/null and b/test/data/renderer/way-dashes/reference.png differ
diff --git a/test/data/renderer/way-dashes/style.mapcss b/test/data/renderer/way-dashes/style.mapcss
new file mode 100644
index 0000000..47e3997
--- /dev/null
+++ b/test/data/renderer/way-dashes/style.mapcss
@@ -0,0 +1,36 @@
+canvas {
+    default-points: false;
+    default-lines: false;
+}
+
+way[test] {
+	width: 10;
+	color: red;
+}
+
+way[test=style5] {
+	dashes: 3,3,10,3;
+}
+
+way[test=style4] {
+	dashes: 0.2,5;
+}
+
+way[test=style3] {
+	color: blue;
+	dashes: list(12, 2);
+	dashes-offset: 1;
+}
+
+way[test=style2] {
+	dashes: list(8, 4);
+	dashes-offset: 1;
+	dashes-background-color: green;
+}
+
+way[test=style1] {
+	dashes: 8, 4;
+	dashes-offset: 1;
+	dashes-background-color: green;
+	dashes-background-opacity: .5;
+}
diff --git a/test/data/renderer/way-width/reference.png b/test/data/renderer/way-width/reference.png
index 9aaf0ed..1adbda7 100644
Binary files a/test/data/renderer/way-width/reference.png and b/test/data/renderer/way-width/reference.png differ
diff --git a/test/functional/org/openstreetmap/josm/gui/mappaint/MapCSSRendererTest.java b/test/functional/org/openstreetmap/josm/gui/mappaint/MapCSSRendererTest.java
new file mode 100644
index 0000000..fe6935e
--- /dev/null
+++ b/test/functional/org/openstreetmap/josm/gui/mappaint/MapCSSRendererTest.java
@@ -0,0 +1,308 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.mappaint;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import java.awt.Graphics2D;
+import java.awt.GraphicsEnvironment;
+import java.awt.Point;
+import java.awt.RenderingHints;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import javax.imageio.ImageIO;
+
+import org.junit.Assume;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer;
+import org.openstreetmap.josm.gui.NavigatableComponent;
+import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
+import org.openstreetmap.josm.gui.preferences.SourceEntry;
+import org.openstreetmap.josm.io.IllegalDataException;
+import org.openstreetmap.josm.io.OsmReader;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * Test cases for {@link StyledMapRenderer} and the MapCSS classes.
+ * <p>
+ * This test uses the data and reference files stored in the test data directory {@value #TEST_DATA_BASE}
+ * @author Michael Zangl
+ */
+ at RunWith(Parameterized.class)
+public class MapCSSRendererTest {
+    private static final String TEST_DATA_BASE = "/renderer/";
+    /**
+     * lat = 0..1, lon = 0..1
+     */
+    private static final Bounds AREA_DEFAULT = new Bounds(0, 0, 1, 1);
+    private static final int IMAGE_SIZE = 256;
+
+    /**
+     * Minimal test rules required
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences().projection();
+
+    private TestConfig testConfig;
+
+    /**
+     * The different configurations of this test.
+     *
+     * @return The parameters.
+     */
+    @Parameters(name = "{1}")
+    public static Collection<Object[]> runs() {
+        return Stream.of(
+                /** Tests for StyledMapRenderer#drawNodeSymbol */
+                new TestConfig("node-shapes", AREA_DEFAULT),
+
+                /** Text for nodes */
+                new TestConfig("node-text", AREA_DEFAULT).usesFont("DejaVu Sans"),
+
+                /** Tests that StyledMapRenderer#drawWay respects width */
+                new TestConfig("way-width", AREA_DEFAULT),
+
+                /** Tests the way color property, including alpha */
+                new TestConfig("way-color", AREA_DEFAULT),
+
+                /** Tests dashed ways. */
+                new TestConfig("way-dashes", AREA_DEFAULT),
+
+                /** Tests fill-color property */
+                new TestConfig("area-fill-color", AREA_DEFAULT),
+
+                /** Tests the fill-image property. */
+                new TestConfig("area-fill-image", AREA_DEFAULT),
+
+                /** Tests area label drawing/placement */
+                new TestConfig("area-text", AREA_DEFAULT),
+
+                /** Tests area icon drawing/placement */
+                new TestConfig("area-icon", AREA_DEFAULT),
+
+                /** Tests if all styles are sorted correctly. Tests {@link StyleRecord#compareTo(StyleRecord)} */
+                new TestConfig("order", AREA_DEFAULT)
+
+                ).map(e -> new Object[] {e, e.testDirectory})
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * @param testConfig The config to use for this test.
+     * @param ignored The name to print it nicely
+     */
+    public MapCSSRendererTest(TestConfig testConfig, String ignored) {
+        this.testConfig = testConfig;
+    }
+
+    /**
+     * This test only runs on OpenJDK.
+     * It is ignored for other Java versions since they differ slightly in their rendering engine.
+     * @since 11691
+     */
+    @Before
+    public void forOpenJDK() {
+        String javaHome = System.getProperty("java.home");
+        Assume.assumeTrue("Test requires openJDK", javaHome != null && javaHome.contains("openjdk"));
+
+        List<String> fonts = Arrays.asList(GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames());
+        for (String font : testConfig.fonts) {
+            Assume.assumeTrue("Test requires font: " + font, fonts.contains(font));
+        }
+    }
+
+    /**
+     * Run the test using {@link #testConfig}
+     * @throws Exception if an error occurs
+     */
+    @Test
+    public void testRender() throws Exception {
+        // Force reset of preferences
+        StyledMapRenderer.PREFERENCE_ANTIALIASING_USE.put(true);
+        StyledMapRenderer.PREFERENCE_TEXT_ANTIALIASING.put("gasp");
+
+        // load the data
+        DataSet dataSet = testConfig.getOsmDataSet();
+
+        // load the style
+        MapCSSStyleSource.STYLE_SOURCE_LOCK.writeLock().lock();
+        try {
+            MapPaintStyles.getStyles().clear();
+
+            MapCSSStyleSource source = new MapCSSStyleSource(testConfig.getStyleSourceEntry());
+            source.loadStyleSource();
+            if (!source.getErrors().isEmpty()) {
+                fail("Failed to load style file. Errors: " + source.getErrors());
+            }
+            MapPaintStyles.getStyles().setStyleSources(Arrays.asList(source));
+            MapPaintStyles.fireMapPaintSylesUpdated();
+            MapPaintStyles.getStyles().clearCached();
+
+        } finally {
+            MapCSSStyleSource.STYLE_SOURCE_LOCK.writeLock().unlock();
+        }
+
+        // create the renderer
+        BufferedImage image = new BufferedImage(IMAGE_SIZE, IMAGE_SIZE, BufferedImage.TYPE_INT_ARGB);
+        NavigatableComponent nc = new NavigatableComponent() {
+            {
+                setBounds(0, 0, IMAGE_SIZE, IMAGE_SIZE);
+                updateLocationState();
+            }
+
+            @Override
+            protected boolean isVisibleOnScreen() {
+                return true;
+            }
+
+            @Override
+            public Point getLocationOnScreen() {
+                return new Point(0, 0);
+            }
+        };
+        nc.zoomTo(testConfig.testArea);
+        dataSet.allPrimitives().stream().forEach(this::loadPrimitiveStyle);
+        dataSet.setSelected(dataSet.allPrimitives().stream().filter(n -> n.isKeyTrue("selected")).collect(Collectors.toList()));
+
+        Graphics2D g = image.createGraphics();
+        // Force all render hints to be defaults - do not use platform values
+        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+        g.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
+        g.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
+        g.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE);
+        g.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
+        g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
+        g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
+        g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_NORMALIZE);
+        g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
+        new StyledMapRenderer(g, nc, false).render(dataSet, false, testConfig.testArea);
+
+        BufferedImage reference = testConfig.getReference();
+
+        // now compute differences:
+        assertEquals(IMAGE_SIZE, reference.getWidth());
+        assertEquals(IMAGE_SIZE, reference.getHeight());
+
+        StringBuilder differences = new StringBuilder();
+        ArrayList<Point> differencePoints = new ArrayList<>();
+
+        for (int y = 0; y < reference.getHeight(); y++) {
+            for (int x = 0; x < reference.getWidth(); x++) {
+                int expected = reference.getRGB(x, y);
+                int result = image.getRGB(x, y);
+                if (!colorsAreSame(expected, result)) {
+                    differencePoints.add(new Point(x, y));
+                    if (differences.length() < 500) {
+                        differences.append("\nDifference at ")
+                        .append(x)
+                        .append(",")
+                        .append(y)
+                        .append(": Expected ")
+                        .append(Integer.toHexString(expected))
+                        .append(" but got ")
+                        .append(Integer.toHexString(result));
+                    }
+                }
+            }
+        }
+
+        if (differencePoints.size() > 0) {
+            // You can use this to debug:
+            ImageIO.write(image, "png", new File(testConfig.getTestDirectory() + "/test-output.png"));
+
+            // Add a nice image that highlights the differences:
+            BufferedImage diffImage = new BufferedImage(IMAGE_SIZE, IMAGE_SIZE, BufferedImage.TYPE_INT_ARGB);
+            for (Point p : differencePoints) {
+                diffImage.setRGB(p.x, p.y, 0xffff0000);
+            }
+            ImageIO.write(diffImage, "png", new File(testConfig.getTestDirectory() + "/test-differences.png"));
+
+            fail(MessageFormat.format("Images for test {0} differ at {1} points: {2}",
+                    testConfig.testDirectory, differencePoints.size(), differences.toString()));
+        }
+    }
+
+    private void loadPrimitiveStyle(OsmPrimitive n) {
+        n.setHighlighted(n.isKeyTrue("highlight"));
+        if (n.isKeyTrue("disabled")) {
+            n.setDisabledState(false);
+        }
+    }
+
+    /**
+     * Check if two colors differ
+     * @param expected The expected color
+     * @param actual The actual color
+     * @return <code>true</code> if they differ.
+     */
+    private boolean colorsAreSame(int expected, int actual) {
+        int expectedAlpha = expected >> 24;
+        if (expectedAlpha == 0) {
+            return actual >> 24 == 0;
+        } else {
+            return expected == actual;
+        }
+    }
+
+    private static class TestConfig {
+        private final String testDirectory;
+        private final Bounds testArea;
+        private final ArrayList<String> fonts = new ArrayList<>();
+
+        TestConfig(String testDirectory, Bounds testArea) {
+            this.testDirectory = testDirectory;
+            this.testArea = testArea;
+        }
+
+        public TestConfig usesFont(String string) {
+            this.fonts.add(string);
+            return this;
+        }
+
+        public BufferedImage getReference() throws IOException {
+            return ImageIO.read(new File(getTestDirectory() + "/reference.png"));
+        }
+
+        private String getTestDirectory() {
+            return TestUtils.getTestDataRoot() + TEST_DATA_BASE + testDirectory;
+        }
+
+        public SourceEntry getStyleSourceEntry() {
+            return new SourceEntry(getTestDirectory() + "/style.mapcss",
+                    "test style", "a test style", true // active
+            );
+        }
+
+        public DataSet getOsmDataSet() throws FileNotFoundException, IllegalDataException {
+            return OsmReader.parseDataSet(new FileInputStream(getTestDirectory() + "/data.osm"), null);
+        }
+
+        @Override
+        public String toString() {
+            return "TestConfig [testDirectory=" + testDirectory + ", testArea=" + testArea + ']';
+        }
+    }
+}
diff --git a/test/functional/org/openstreetmap/josm/gui/mappaint/StyleCacheTest.java b/test/functional/org/openstreetmap/josm/gui/mappaint/StyleCacheTest.java
index aab8b12..acfa4fb 100644
--- a/test/functional/org/openstreetmap/josm/gui/mappaint/StyleCacheTest.java
+++ b/test/functional/org/openstreetmap/josm/gui/mappaint/StyleCacheTest.java
@@ -10,22 +10,28 @@ import java.io.File;
 import java.io.InputStream;
 import java.util.IdentityHashMap;
 
+import org.junit.AfterClass;
 import org.junit.Assert;
+import org.junit.Before;
 import org.junit.BeforeClass;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.visitor.paint.Rendering;
 import org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.io.Compression;
 import org.openstreetmap.josm.io.OsmReader;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 import org.openstreetmap.josm.tools.Pair;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
 /**
  * Test {@link StyleCache}.
  */
@@ -40,28 +46,54 @@ public class StyleCacheTest {
     private static DataSet dsCity;
     private static DataSet dsCity2;
 
+    /**
+     * The test rules used for this test.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences().platform().projection().mapStyles().timeout(60000);
+
+    /**
+     * Load the test data that is required.
+     * @throws Exception If an error occurred during load.
+     */
     @BeforeClass
     public static void load() throws Exception {
-        JOSMFixture.createPerformanceTestFixture().init(true);
         img = new BufferedImage(IMG_WIDTH, IMG_HEIGHT, BufferedImage.TYPE_INT_ARGB);
-        g = (Graphics2D) img.getGraphics();
-        g.setClip(0, 0, IMG_WIDTH, IMG_WIDTH);
-        g.setColor(Color.BLACK);
-        g.fillRect(0, 0, IMG_WIDTH, IMG_WIDTH);
-        nc = Main.map.mapView;
-        nc.setBounds(0, 0, IMG_WIDTH, IMG_HEIGHT);
 
-        MapPaintStyles.readFromPreferences();
         try (
             InputStream fisC = Compression.getUncompressedFileInputStream(new File("data_nodist/neubrandenburg.osm.bz2"));
         ) {
             dsCity = OsmReader.parseDataSet(fisC, NullProgressMonitor.INSTANCE);
         }
-        try (
-            InputStream fisC = Compression.getUncompressedFileInputStream(new File("data_nodist/neubrandenburg.osm.bz2"));
-        ) {
-            dsCity2 = OsmReader.parseDataSet(fisC, NullProgressMonitor.INSTANCE);
-        }
+        dsCity2 = new DataSet(dsCity);
+    }
+
+    /**
+     * Free the memory allocated for this test.
+     * <p>
+     * Since we are running junit in non-forked mode, we don't know when this test will not be referenced any more.
+     */
+    @AfterClass
+    public static void unload() {
+        g = null;
+        img = null;
+        nc = null;
+        dsCity = null;
+        dsCity2 = null;
+    }
+
+    /**
+     * Create the temporary graphics
+     */
+    @Before
+    public void loadGraphicComponents() {
+        g = (Graphics2D) img.getGraphics();
+        g.setClip(0, 0, IMG_WIDTH, IMG_WIDTH);
+        g.setColor(Color.BLACK);
+        g.fillRect(0, 0, IMG_WIDTH, IMG_WIDTH);
+        nc = new MapView(Main.getLayerManager(), null);
+        nc.setBounds(0, 0, IMG_WIDTH, IMG_HEIGHT);
     }
 
     /**
@@ -78,6 +110,8 @@ public class StyleCacheTest {
      */
     @Test
     public void testStyleCacheInternPool() {
+        MapPaintStyles.getStyles().clearCached();
+        StyleCache.clearStyleCachePool();
         Bounds bounds = new Bounds(53.56, 13.25, 53.57, 13.26);
         Rendering visitor = new StyledMapRenderer(g, nc, false);
         nc.zoomTo(bounds);
@@ -89,6 +123,12 @@ public class StyleCacheTest {
             if (internPoolSize == null) {
                 internPoolSize = newInternPoolSize;
             } else {
+                if (internPoolSize != newInternPoolSize) {
+                    System.err.println("style sources:");
+                    for (StyleSource s : MapPaintStyles.getStyles().getStyleSources()) {
+                        System.err.println(s.url + " active:" + s.active);
+                    }
+                }
                 assertEquals("intern pool size", internPoolSize.intValue(), newInternPoolSize);
             }
         }
@@ -104,6 +144,7 @@ public class StyleCacheTest {
      */
     @Test
     public void testStyleCacheInternPool2() {
+        StyleCache.clearStyleCachePool();
         Bounds bounds = new Bounds(53.56, 13.25, 53.57, 13.26);
         Rendering visitor = new StyledMapRenderer(g, nc, false);
         nc.zoomTo(bounds);
diff --git a/test/unit/org/openstreetmap/josm/actions/JoinAreasActionTest.java b/test/unit/org/openstreetmap/josm/actions/JoinAreasActionTest.java
index d54ed11..9a9a3c2 100644
--- a/test/unit/org/openstreetmap/josm/actions/JoinAreasActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/JoinAreasActionTest.java
@@ -2,10 +2,16 @@
 package org.openstreetmap.josm.actions;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Arrays;
 import java.util.Collection;
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
 
 import org.junit.Rule;
 import org.junit.Test;
@@ -13,16 +19,22 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.actions.search.SearchAction;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.io.OsmReader;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.tools.MultiMap;
 import org.openstreetmap.josm.tools.Utils;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+import org.junit.Ignore;
 
 /**
  * Unit tests of {@link JoinAreasAction} class.
@@ -42,18 +54,18 @@ public class JoinAreasActionTest {
      * @throws IllegalDataException if OSM parsing fails
      */
     @Test
+    @Ignore("disable this test, needs further working") // XXX
     public void testTicket10511() throws IOException, IllegalDataException {
         try (InputStream is = TestUtils.getRegressionDataStream(10511, "10511_mini.osm")) {
             DataSet ds = OsmReader.parseDataSet(is, null);
             Layer layer = new OsmDataLayer(ds, null, null);
             Main.getLayerManager().addLayer(layer);
-            // FIXME enable this test after we fix the bug. Test disabled for now
-            // try {
-            //     new JoinAreasAction().join(ds.getWays());
-            // } finally {
-            // Ensure we clean the place before leaving, even if test fails.
-            Main.getLayerManager().removeLayer(layer);
-            // }
+            try {
+                new JoinAreasAction().join(ds.getWays());
+            } finally {
+                // Ensure we clean the place before leaving, even if test fails.
+                Main.getLayerManager().removeLayer(layer);
+            }
         }
     }
 
@@ -82,4 +94,101 @@ public class JoinAreasActionTest {
             }
         }
     }
+
+    /**
+     * Non-regression test which checks example files in data_nodist
+     * @throws Exception if an error occurs
+     */
+    @Test
+    @SuppressWarnings({ "rawtypes", "unchecked" })
+    public void testExamples() throws Exception {
+        DataSet dsToJoin, dsExpected;
+        try (InputStream is = new FileInputStream("data_nodist/Join_Areas_Tests.osm")) {
+            dsToJoin = OsmReader.parseDataSet(is, NullProgressMonitor.INSTANCE);
+        }
+        try (InputStream is = new FileInputStream("data_nodist/Join_Areas_Tests_joined.osm")) {
+            dsExpected = OsmReader.parseDataSet(is, NullProgressMonitor.INSTANCE);
+        }
+        Collection<OsmPrimitive> testPrims = dsToJoin.getPrimitives(osm -> osm.get("test") != null);
+        MultiMap<String, OsmPrimitive> tests = new MultiMap<>();
+        for (OsmPrimitive testPrim : testPrims) {
+            tests.put(testPrim.get("test"), testPrim);
+        }
+        for (String test : tests.keySet()) {
+            Collection<OsmPrimitive> primitives = tests.get(test);
+            for (OsmPrimitive osm : primitives) {
+                assertTrue(test + "; expected way, but got: " + osm, osm instanceof Way);
+            }
+            new JoinAreasAction().join((Collection) primitives);
+            Collection<OsmPrimitive> joinedCol = dsToJoin.getPrimitives(osm -> !osm.isDeleted() && Objects.equals(osm.get("test"), test));
+            assertEquals("in test " + test + ":", 1, joinedCol.size());
+            Collection<OsmPrimitive> expectedCol = dsExpected.getPrimitives(osm -> !osm.isDeleted() && Objects.equals(osm.get("test"), test));
+            assertEquals("in test " + test + ":", 1, expectedCol.size());
+            OsmPrimitive osmJoined = joinedCol.iterator().next();
+            OsmPrimitive osmExpected = expectedCol.iterator().next();
+            assertTrue("difference in test " + test, isSemanticallyEqual(osmExpected, osmJoined));
+        }
+    }
+
+    /**
+     * Check if 2 primitives are semantically equal as result of a join areas
+     * operation.
+     * @param osm1 first primitive
+     * @param osm2 second primitive
+     * @return true if both primitives are semantically equal
+     */
+    private boolean isSemanticallyEqual(OsmPrimitive osm1, OsmPrimitive osm2) {
+        if (osm1 instanceof Node && osm2 instanceof Node)
+            return isSemanticallyEqualNode((Node) osm1, (Node) osm2);
+        if (osm1 instanceof Way && osm2 instanceof Way)
+            return isSemanticallyEqualWay((Way) osm1, (Way) osm2);
+        if (osm1 instanceof Relation && osm2 instanceof Relation)
+            return isSemanticallyEqualRelation((Relation) osm1, (Relation) osm2);
+        return false;
+    }
+
+    private boolean isSemanticallyEqualRelation(Relation r1, Relation r2) {
+        if (!r1.getKeys().equals(r2.getKeys())) return false;
+        if (r1.getMembersCount() != r2.getMembersCount()) return false;
+        Set<RelationMember> matchCandidates = new HashSet<>(r2.getMembers());
+        for (RelationMember rm : r1.getMembers()) {
+            RelationMember matched = null;
+            for (RelationMember cand : matchCandidates) {
+                if (!rm.getRole().equals(cand.getRole())) continue;
+                if (!isSemanticallyEqual(rm.getMember(), cand.getMember())) continue;
+                matched = cand;
+                break;
+            }
+            if (matched == null) return false;
+            matchCandidates.remove(matched);
+        }
+        return true;
+    }
+
+    private boolean isSemanticallyEqualWay(Way w1, Way w2) {
+        if (!w1.isClosed() || !w2.isClosed()) throw new UnsupportedOperationException();
+        if (!w1.getKeys().equals(w2.getKeys())) return false;
+        if (w1.getNodesCount() != w2.getNodesCount()) return false;
+        int n = w1.getNodesCount() - 1;
+        for (int dir : Arrays.asList(1, -1)) {
+            for (int i = 0; i < n; i++) {
+                boolean different = false;
+                for (int j = 0; j < n; j++) {
+                    Node n1 = w1.getNode(j);
+                    Node n2 = w2.getNode(Utils.mod(i + dir*j, n));
+                    if (!isSemanticallyEqualNode(n1, n2)) {
+                        different = true;
+                        break;
+                    }
+                }
+                if (!different)
+                    return true;
+            }
+        }
+        return false;
+    }
+
+    private boolean isSemanticallyEqualNode(Node n1, Node n2) {
+        return n1.hasEqualSemanticAttributes(n2);
+    }
 }
diff --git a/test/unit/org/openstreetmap/josm/actions/mapmode/AddNoteActionTest.java b/test/unit/org/openstreetmap/josm/actions/mapmode/AddNoteActionTest.java
index 096fea2..80053f2 100644
--- a/test/unit/org/openstreetmap/josm/actions/mapmode/AddNoteActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/mapmode/AddNoteActionTest.java
@@ -37,7 +37,7 @@ public class AddNoteActionTest {
         OsmDataLayer layer = new OsmDataLayer(new DataSet(), "", null);
         try {
             Main.getLayerManager().addLayer(layer);
-            AddNoteAction mapMode = new AddNoteAction(Main.map, new NoteData(Collections.<Note>emptyList()));
+            AddNoteAction mapMode = new AddNoteAction(new NoteData(Collections.<Note>emptyList()));
             MapMode oldMapMode = Main.map.mapMode;
             assertTrue(Main.map.selectMapMode(mapMode));
             assertEquals(mapMode, Main.map.mapMode);
diff --git a/test/unit/org/openstreetmap/josm/actions/mapmode/DeleteActionTest.java b/test/unit/org/openstreetmap/josm/actions/mapmode/DeleteActionTest.java
index f3170f3..2961299 100644
--- a/test/unit/org/openstreetmap/josm/actions/mapmode/DeleteActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/mapmode/DeleteActionTest.java
@@ -33,7 +33,7 @@ public class DeleteActionTest {
         OsmDataLayer layer = new OsmDataLayer(new DataSet(), "", null);
         try {
             Main.getLayerManager().addLayer(layer);
-            DeleteAction mapMode = new DeleteAction(Main.map);
+            DeleteAction mapMode = new DeleteAction();
             MapMode oldMapMode = Main.map.mapMode;
             assertTrue(Main.map.selectMapMode(mapMode));
             assertEquals(mapMode, Main.map.mapMode);
diff --git a/test/unit/org/openstreetmap/josm/actions/mapmode/ExtrudeActionTest.java b/test/unit/org/openstreetmap/josm/actions/mapmode/ExtrudeActionTest.java
index 46d00f6..24de8a2 100644
--- a/test/unit/org/openstreetmap/josm/actions/mapmode/ExtrudeActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/mapmode/ExtrudeActionTest.java
@@ -33,7 +33,7 @@ public class ExtrudeActionTest {
         OsmDataLayer layer = new OsmDataLayer(new DataSet(), "", null);
         try {
             Main.getLayerManager().addLayer(layer);
-            ExtrudeAction mapMode = new ExtrudeAction(Main.map);
+            ExtrudeAction mapMode = new ExtrudeAction();
             MapMode oldMapMode = Main.map.mapMode;
             assertTrue(Main.map.selectMapMode(mapMode));
             assertEquals(mapMode, Main.map.mapMode);
diff --git a/test/unit/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyActionTest.java b/test/unit/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyActionTest.java
index c442ac6..b6559ba 100644
--- a/test/unit/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyActionTest.java
@@ -33,7 +33,7 @@ public class ImproveWayAccuracyActionTest {
         OsmDataLayer layer = new OsmDataLayer(new DataSet(), "", null);
         try {
             Main.getLayerManager().addLayer(layer);
-            ImproveWayAccuracyAction mapMode = new ImproveWayAccuracyAction(Main.map);
+            ImproveWayAccuracyAction mapMode = new ImproveWayAccuracyAction();
             MapMode oldMapMode = Main.map.mapMode;
             assertTrue(Main.map.selectMapMode(mapMode));
             assertEquals(mapMode, Main.map.mapMode);
diff --git a/test/unit/org/openstreetmap/josm/actions/mapmode/MapViewMock.java b/test/unit/org/openstreetmap/josm/actions/mapmode/MapViewMock.java
index 284bc9c..e066b37 100644
--- a/test/unit/org/openstreetmap/josm/actions/mapmode/MapViewMock.java
+++ b/test/unit/org/openstreetmap/josm/actions/mapmode/MapViewMock.java
@@ -11,7 +11,7 @@ import org.openstreetmap.josm.gui.MapView;
 
 class MapViewMock extends MapView {
     MapViewMock() {
-        super(Main.getLayerManager(), null, null);
+        super(Main.getLayerManager(), null);
     }
 
     @Override
diff --git a/test/unit/org/openstreetmap/josm/command/SequenceCommandTest.java b/test/unit/org/openstreetmap/josm/command/SequenceCommandTest.java
index ec4b834..90a0686 100644
--- a/test/unit/org/openstreetmap/josm/command/SequenceCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/SequenceCommandTest.java
@@ -98,6 +98,41 @@ public class SequenceCommandTest {
     }
 
     /**
+     * Test {@link SequenceCommand#executeCommand()} rollback if case of subcommand failure.
+     */
+    @Test
+    public void testExecuteRollback() {
+        TestCommand command1 = new TestCommand(null);
+        FailingCommand command2 = new FailingCommand();
+        TestCommand command3 = new TestCommand(null);
+        SequenceCommand command = new SequenceCommand("seq", Arrays.<Command>asList(command1, command2, command3));
+        assertFalse(command.executeCommand());
+        assertFalse(command1.executed);
+        // Don't check command2 executed state as it's possible but not necessary to undo failed commands
+        assertFalse(command3.executed);
+        command.undoCommand();
+    }
+
+    /**
+     * Test {@link SequenceCommand#executeCommand()} with continueOnError = true
+     */
+    @Test
+    public void testContinueOnErrors() {
+        TestCommand command1 = new TestCommand(null);
+        FailingCommand command2 = new FailingCommand();
+        TestCommand command3 = new TestCommand(null);
+        SequenceCommand command = new SequenceCommand("seq", Arrays.<Command>asList(command1, command2, command3));
+        command.continueOnError = true;
+        assertTrue(command.executeCommand());
+        assertTrue(command1.executed);
+        assertTrue(command3.executed);
+        command.undoCommand();
+        assertFalse(command1.executed);
+        // Don't check command2 executed state as it's possible but not necessary to undo failed commands
+        assertFalse(command3.executed);
+    }
+
+    /**
      * Test {@link SequenceCommand#undoCommand()}
      */
     @Test
@@ -228,4 +263,30 @@ public class SequenceCommandTest {
         }
 
     }
+
+    private static class FailingCommand extends TestCommand {
+
+        FailingCommand() {
+            super(null);
+        }
+
+        @Override
+        public boolean executeCommand() {
+            executed = true;
+            return false;
+        }
+
+        @Override
+        public void undoCommand() {
+            assertTrue("Cannot undo without execute", executed);
+            executed = false;
+        }
+
+        @Override
+        public String toString() {
+            return "FailingCommand";
+        }
+
+    }
+
 }
diff --git a/test/unit/org/openstreetmap/josm/data/projection/ProjectionRefTest.java b/test/unit/org/openstreetmap/josm/data/projection/ProjectionRefTest.java
index 58f1b80..6e382ad 100644
--- a/test/unit/org/openstreetmap/josm/data/projection/ProjectionRefTest.java
+++ b/test/unit/org/openstreetmap/josm/data/projection/ProjectionRefTest.java
@@ -30,11 +30,13 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.junit.Assert;
+import org.junit.Rule;
 import org.junit.Test;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.gui.preferences.projection.CodeProjectionChoice;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 import org.openstreetmap.josm.tools.Pair;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -47,7 +49,7 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
  * run the main method of this class. For this, you need to have the cs2cs
  * program from the proj.4 library in path (or use <code>CS2CS_EXE</code> to set
  * the full path of the executable). Make sure the required *.gsb grid files
- * can be accessed, i.e. copy them from <code>data/projection</code> to <code>/usr/share/proj</code> or
+ * can be accessed, i.e. copy them from <code>data_nodist/projection</code> to <code>/usr/share/proj</code> or
  * wherever cs2cs expects them to be placed.
  *
  * The input parameter for the external library is <em>not</em> the projection code
@@ -60,6 +62,7 @@ public class ProjectionRefTest {
     private static final String CS2CS_EXE = "cs2cs";
 
     private static final String REFERENCE_DATA_FILE = "data_nodist/projection/projection-reference-data";
+    private static final String PROJ_LIB_DIR = "data_nodist/projection";
 
     private static class RefEntry {
         String code;
@@ -76,6 +79,13 @@ public class ProjectionRefTest {
     static Random rand = new SecureRandom();
 
     /**
+     * Setup test.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().platform();
+
+    /**
      * Program entry point.
      * @param args no argument is expected
      * @throws IOException in case of I/O error
@@ -223,6 +233,7 @@ public class ProjectionRefTest {
         def = def.replace("ntf_r93_b.gsb", "ntf_r93.gsb");
         args.addAll(Arrays.asList(def.split(" ")));
         ProcessBuilder pb = new ProcessBuilder(args);
+        pb.environment().put("PROJ_LIB", new File(PROJ_LIB_DIR).getAbsolutePath());
 
         String output;
         try {
@@ -283,6 +294,10 @@ public class ProjectionRefTest {
         }
     }
 
+    /**
+     * Test projections.
+     * @throws IOException if any I/O error occurs
+     */
     @Test
     public void testProjections() throws IOException {
         StringBuilder fail = new StringBuilder();
@@ -295,27 +310,28 @@ public class ProjectionRefTest {
                 Assert.fail("unkown code: "+ref.code);
             }
             if (!ref.def.equals(def0)) {
-                Assert.fail("definitions for " + ref.code + " do not match");
-            }
-            Projection proj = Projections.getProjectionByCode(ref.code);
-            double scale = ((CustomProjection) proj).getToMeter();
-            for (Pair<LatLon, EastNorth> p : ref.data) {
-                LatLon ll = p.a;
-                EastNorth enRef = p.b;
-                enRef = new EastNorth(enRef.east() * scale, enRef.north() * scale); // convert to meter
+                fail.append("definitions for ").append(ref.code).append(" do not match\n");
+            } else {
+                Projection proj = Projections.getProjectionByCode(ref.code);
+                double scale = ((CustomProjection) proj).getToMeter();
+                for (Pair<LatLon, EastNorth> p : ref.data) {
+                    LatLon ll = p.a;
+                    EastNorth enRef = p.b;
+                    enRef = new EastNorth(enRef.east() * scale, enRef.north() * scale); // convert to meter
 
-                EastNorth en = proj.latlon2eastNorth(ll);
-                if (proj.switchXY()) {
-                    en = new EastNorth(en.north(), en.east());
-                }
-                en = new EastNorth(en.east() * scale, en.north() * scale); // convert to meter
-                final double EPSILON_EN = 1e-2; // 1cm
-                if (!isEqual(enRef, en, EPSILON_EN, true)) {
-                    String errorEN = String.format("%s (%s): Projecting latlon(%s,%s):%n" +
-                            "        expected: eastnorth(%s,%s),%n" +
-                            "        but got:  eastnorth(%s,%s)!%n",
-                            proj.toString(), proj.toCode(), ll.lat(), ll.lon(), enRef.east(), enRef.north(), en.east(), en.north());
-                    fail.append(errorEN);
+                    EastNorth en = proj.latlon2eastNorth(ll);
+                    if (proj.switchXY()) {
+                        en = new EastNorth(en.north(), en.east());
+                    }
+                    en = new EastNorth(en.east() * scale, en.north() * scale); // convert to meter
+                    final double EPSILON_EN = 1e-2; // 1cm
+                    if (!isEqual(enRef, en, EPSILON_EN, true)) {
+                        String errorEN = String.format("%s (%s): Projecting latlon(%s,%s):%n" +
+                                "        expected: eastnorth(%s,%s),%n" +
+                                "        but got:  eastnorth(%s,%s)!%n",
+                                proj.toString(), proj.toCode(), ll.lat(), ll.lon(), enRef.east(), enRef.north(), en.east(), en.north());
+                        fail.append(errorEN);
+                    }
                 }
             }
             allCodes.remove(ref.code);
diff --git a/test/unit/org/openstreetmap/josm/data/projection/SwissGridTest.java b/test/unit/org/openstreetmap/josm/data/projection/SwissGridTest.java
index 21a9ec2..c60b7ed 100644
--- a/test/unit/org/openstreetmap/josm/data/projection/SwissGridTest.java
+++ b/test/unit/org/openstreetmap/josm/data/projection/SwissGridTest.java
@@ -5,11 +5,14 @@ import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 
 import org.junit.BeforeClass;
-import org.junit.Ignore;
+import org.junit.Rule;
 import org.junit.Test;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 public class SwissGridTest {
     private static final String SWISS_EPSG_CODE = "EPSG:21781";
@@ -18,6 +21,13 @@ public class SwissGridTest {
     /**
      * Setup test.
      */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().platform();
+
+    /**
+     * Setup test.
+     */
     @BeforeClass
     public static void setUp() {
         Main.setProjection(Projections.getProjectionByCode(SWISS_EPSG_CODE)); // Swiss grid
@@ -27,7 +37,7 @@ public class SwissGridTest {
     // CHECKSTYLE.OFF: SingleSpaceSeparator
 
     /**
-     * source: http://www.swisstopo.admin.ch/internet/swisstopo/en/home/topics/survey/sys/refsys/switzerland.parsysrelated1.37696.downloadList.97912.DownloadFile.tmp/swissprojectionen.pdf
+     * source: https://www.swisstopo.admin.ch/content/swisstopo-internet/en/topics/survey/reference-systems/projections/_jcr_content/contentPar/tabs/items/dokumente_publikatio/tabPar/downloadlist/downloadItems/463_1459341821844.download/refsyse.pdf
      */
     ProjData[] data = {
             new ProjData("Zimmerwald",     d(7, 27, 54.983506), d(46, 52, 37.540562), 947.149, 602030.680, 191775.030, 897.915),
@@ -55,7 +65,6 @@ public class SwissGridTest {
         }
     }
 
-    private static final double EPSILON_APPROX = 1.5;
     private static final double EPSILON_ACCURATE = 0.05;
 
     private void projReferenceTest(final double epsilon) {
@@ -71,14 +80,7 @@ public class SwissGridTest {
     }
 
     @Test
-    public void testProjReferenceTestApprox() {
-        projReferenceTest(EPSILON_APPROX);
-    }
-
-    @Test
-    @Ignore("high accuracy of epsilon=" + EPSILON_ACCURATE + " is not met")
     public void testProjReferenceTestAccurate() {
-        // TODO make this test pass
         projReferenceTest(EPSILON_ACCURATE);
     }
 
@@ -89,24 +91,24 @@ public class SwissGridTest {
         if (debug) {
             System.out.println(en);
         }
-        assertTrue("Lausanne", Math.abs(en.east() - 533111.69) < 0.1);
-        assertTrue("Lausanne", Math.abs(en.north() - 152227.85) < 0.1);
+        assertTrue("Lausanne", Math.abs(en.east() - 533112.13) < 0.1);
+        assertTrue("Lausanne", Math.abs(en.north() - 152227.35) < 0.1);
 
         ll = new LatLon(47.78, 8.58);
         en = Main.getProjection().latlon2eastNorth(ll);
         if (debug) {
             System.out.println(en);
         }
-        assertTrue("Schafouse", Math.abs(en.east() - 685544.16) < 0.1);
-        assertTrue("Schafouse", Math.abs(en.north() - 292782.91) < 0.1);
+        assertTrue("Schafouse", Math.abs(en.east() - 685542.97) < 0.1);
+        assertTrue("Schafouse", Math.abs(en.north() - 292783.21) < 0.1);
 
         ll = new LatLon(46.58, 10.48);
         en = Main.getProjection().latlon2eastNorth(ll);
         if (debug) {
             System.out.println(en);
         }
-        assertTrue("Grinson", Math.abs(en.east() - 833068.04) < 0.1);
-        assertTrue("Grinson", Math.abs(en.north() - 163265.39) < 0.1);
+        assertTrue("Grinson", Math.abs(en.east() - 833066.95) < 0.1);
+        assertTrue("Grinson", Math.abs(en.north() - 163265.32) < 0.1);
 
         ll = new LatLon(46.0 + 57.0 / 60 + 3.89813884505 / 3600, 7.0 + 26.0 / 60 + 19.076595154147 / 3600);
         en = Main.getProjection().latlon2eastNorth(ll);
@@ -116,7 +118,8 @@ public class SwissGridTest {
         assertTrue("Berne", Math.abs(en.east() - 600000.0) < 0.1);
         assertTrue("Berne", Math.abs(en.north() - 200000.0) < 0.1);
 
-        ll = new LatLon(46.0 + 2.0 / 60 + 38.87 / 3600, 8.0 + 43.0 / 60 + 49.79 / 3600);
+        // http://geodesy.geo.admin.ch/reframe/lv03towgs84?easting=700000&northing=100000
+        ll = new LatLon(46.04412093223244, 8.730497366167727);
         en = Main.getProjection().latlon2eastNorth(ll);
         if (debug) {
             System.out.println(en);
@@ -127,7 +130,7 @@ public class SwissGridTest {
 
     @Test
     public void testBeastNorth2latlon() {
-        EastNorth en = new EastNorth(533111.69, 152227.85);
+        EastNorth en = new EastNorth(533112.13, 152227.35);
         LatLon ll = Main.getProjection().eastNorth2latlon(en);
         if (debug) {
             System.out.println(ll);
@@ -135,7 +138,7 @@ public class SwissGridTest {
         assertTrue("Lausanne", Math.abs(ll.lat() - 46.518) < 0.00001);
         assertTrue("Lausanne", Math.abs(ll.lon() - 6.567) < 0.00001);
 
-        en = new EastNorth(685544.16, 292782.91);
+        en = new EastNorth(685542.97, 292783.21);
         ll = Main.getProjection().eastNorth2latlon(en);
         if (debug) {
             System.out.println(ll);
@@ -143,7 +146,7 @@ public class SwissGridTest {
         assertTrue("Schafouse", Math.abs(ll.lat() - 47.78) < 0.00001);
         assertTrue("Schafouse", Math.abs(ll.lon() - 8.58) < 0.00001);
 
-        en = new EastNorth(833068.04, 163265.39);
+        en = new EastNorth(833066.95, 163265.32);
         ll = Main.getProjection().eastNorth2latlon(en);
         if (debug) {
             System.out.println(ll);
@@ -159,13 +162,14 @@ public class SwissGridTest {
         assertTrue("Berne", Math.abs(ll.lat() - (46.0 + 57.0 / 60 + 3.89813884505 / 3600)) < 0.00001);
         assertTrue("Berne", Math.abs(ll.lon() - (7.0 + 26.0 / 60 + 19.076595154147 / 3600)) < 0.00001);
 
+        // http://geodesy.geo.admin.ch/reframe/lv03towgs84?easting=700000&northing=100000
         en = new EastNorth(700000.0, 100000.0);
         ll = Main.getProjection().eastNorth2latlon(en);
         if (debug) {
             System.out.println(ll);
         }
-        assertTrue("Ref", Math.abs(ll.lat() - (46.0 + 2.0 / 60 + 38.87 / 3600)) < 0.00001);
-        assertTrue("Ref", Math.abs(ll.lon() - (8.0 + 43.0 / 60 + 49.79 / 3600)) < 0.00001);
+        assertTrue("Ref", Math.abs(ll.lat() - 46.04412093223244) < 0.00001);
+        assertTrue("Ref", Math.abs(ll.lon() - 8.730497366167727) < 0.00001);
     }
 
     /**
diff --git a/test/unit/org/openstreetmap/josm/data/validation/tests/DuplicateNodeTest.java b/test/unit/org/openstreetmap/josm/data/validation/tests/DuplicateNodeTest.java
index 4b1bb32..084b447 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/tests/DuplicateNodeTest.java
+++ b/test/unit/org/openstreetmap/josm/data/validation/tests/DuplicateNodeTest.java
@@ -30,7 +30,7 @@ public class DuplicateNodeTest {
 
     private static final DuplicateNode TEST = new DuplicateNode();
 
-    private static void doTest(int code, Tag ... tags) {
+    private static void doTest(int code, Tag... tags) {
         performTest(code, buildDataSet(tags), true);
     }
 
diff --git a/test/unit/org/openstreetmap/josm/data/validation/tests/ValidatorTestUtils.java b/test/unit/org/openstreetmap/josm/data/validation/tests/ValidatorTestUtils.java
index 03528fb..0365ec5 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/tests/ValidatorTestUtils.java
+++ b/test/unit/org/openstreetmap/josm/data/validation/tests/ValidatorTestUtils.java
@@ -33,7 +33,7 @@ public final class ValidatorTestUtils {
 
     static <T extends OsmPrimitive> void testSampleFile(String sampleFile,
             Function<DataSet, Iterable<T>> provider, Predicate<String> namePredicate,
-            Test ... tests) throws Exception {
+            Test... tests) throws Exception {
         try (InputStream is = new FileInputStream(sampleFile)) {
             for (T t: provider.apply(OsmReader.parseDataSet(is, null))) {
                 String name = DefaultNameFormatter.getInstance().format(t);
diff --git a/test/unit/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialogTest.java b/test/unit/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialogTest.java
index 5521aa9..ad698e2 100644
--- a/test/unit/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialogTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialogTest.java
@@ -106,7 +106,7 @@ public class InspectPrimitiveDialogTest {
                 "> skipping \"Potlatch 2\" (not active)\n" +
                 "\n" +
                 "List of generated Styles:\n" +
-                " * NodeElemStyle{z_idx=[4.95/0.0/0.0]  symbol=[symbolShape=SQUARE size=6 stroke=java.awt.BasicStroke strokeColor=java.awt.Color[r=255,g=0,b=0] fillColor=java.awt.Color[r=255,g=0,b=0]]}\n" +
+                " * NodeElement{z_idx=[4.95/0.0/0.0]  symbol=[symbolShape=SQUARE size=6 stroke=java.awt.BasicStroke strokeColor=java.awt.Color[r=255,g=0,b=0] fillColor=java.awt.Color[r=255,g=0,b=0]]}\n" +
                 "\n" +
                 "\n";
         // CHECKSTYLE.ON: LineLength
@@ -118,7 +118,8 @@ public class InspectPrimitiveDialogTest {
             n.setUser(User.getAnonymous());
             ds.addPrimitive(n);
             ds.addSelected(n);
-            assertEquals(baseText, InspectPrimitiveDialog.buildMapPaintText().replaceAll("@(\\p{XDigit})+", ""));
+            String text = InspectPrimitiveDialog.buildMapPaintText().replaceAll("@(\\p{XDigit})+", "");
+            assertEquals(baseText, text);
             n = new Node(LatLon.ZERO);
             n.setUser(User.getAnonymous());
             ds.addPrimitive(n);
diff --git a/test/unit/org/openstreetmap/josm/gui/history/HistoryBrowserModelTest.java b/test/unit/org/openstreetmap/josm/gui/history/HistoryBrowserModelTest.java
index 2310fc4..514a954 100644
--- a/test/unit/org/openstreetmap/josm/gui/history/HistoryBrowserModelTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/history/HistoryBrowserModelTest.java
@@ -16,8 +16,6 @@ import org.openstreetmap.josm.data.osm.User;
 import org.openstreetmap.josm.data.osm.history.History;
 import org.openstreetmap.josm.data.osm.history.HistoryDataSet;
 import org.openstreetmap.josm.data.osm.history.HistoryNode;
-import org.openstreetmap.josm.gui.history.HistoryBrowserModel.TagTableModel;
-import org.openstreetmap.josm.gui.history.HistoryBrowserModel.VersionTableModel;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelperTest.java b/test/unit/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelperTest.java
index 9e83236..ed17db6 100644
--- a/test/unit/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelperTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelperTest.java
@@ -3,7 +3,6 @@ package org.openstreetmap.josm.gui.layer.gpx;
 
 import static org.junit.Assert.assertEquals;
 
-import java.awt.Color;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.util.ArrayList;
@@ -17,7 +16,6 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.gpx.GpxData;
 import org.openstreetmap.josm.data.gpx.WayPoint;
-import org.openstreetmap.josm.data.preferences.ColorProperty;
 import org.openstreetmap.josm.io.GpxReaderTest;
 import org.openstreetmap.josm.tools.ColorHelper;
 import org.xml.sax.SAXException;
@@ -126,7 +124,7 @@ public class GpxDrawHelperTest {
      */
     static List<String> calculateColors(String fileName, String layerName, int n) throws IOException, SAXException {
         final GpxData data = GpxReaderTest.parseGpxData(fileName);
-        final GpxDrawHelper gdh = new GpxDrawHelper(data, new ColorProperty("x", Color.MAGENTA));
+        final GpxDrawHelper gdh = new GpxDrawHelper(data);
         gdh.readPreferences(layerName);
         gdh.calculateColors();
         final Iterator<WayPoint> wayPointIterator = data.tracks.iterator().next().getSegments().iterator().next().getWayPoints().iterator();
diff --git a/test/unit/org/openstreetmap/josm/gui/mappaint/MapCSSRendererTest.java b/test/unit/org/openstreetmap/josm/gui/mappaint/MapCSSRendererTest.java
deleted file mode 100644
index b305166..0000000
--- a/test/unit/org/openstreetmap/josm/gui/mappaint/MapCSSRendererTest.java
+++ /dev/null
@@ -1,199 +0,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.mappaint;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-import java.awt.Point;
-import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import javax.imageio.ImageIO;
-
-import org.junit.Ignore;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-import org.openstreetmap.josm.TestUtils;
-import org.openstreetmap.josm.data.Bounds;
-import org.openstreetmap.josm.data.osm.DataSet;
-import org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer;
-import org.openstreetmap.josm.gui.NavigatableComponent;
-import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
-import org.openstreetmap.josm.gui.preferences.SourceEntry;
-import org.openstreetmap.josm.io.IllegalDataException;
-import org.openstreetmap.josm.io.OsmReader;
-import org.openstreetmap.josm.testutils.JOSMTestRules;
-
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
-/**
- * Test cases for {@link StyledMapRenderer} and the MapCSS classes.
- * <p>
- * This test uses the data and reference files stored in the test data directory {@value #TEST_DATA_BASE}
- * @author Michael Zangl
- */
- at RunWith(Parameterized.class)
-public class MapCSSRendererTest {
-    private static final String TEST_DATA_BASE = "/renderer/";
-    /**
-     * lat = 0..1, lon = 0..1
-     */
-    private static final Bounds AREA_DEFAULT = new Bounds(0, 0, 1, 1);
-    private static final int IMAGE_SIZE = 256;
-
-    /**
-     * Minimal test rules required
-     */
-    @Rule
-    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().preferences().projection();
-
-    private TestConfig testConfig;
-
-    /**
-     * The different configurations of this test.
-     * @return The parameters.
-     */
-    @Parameters
-    public static Collection<Object[]> runs() {
-        return Stream.of(
-                /** Tests for StyledMapRenderer#drawNodeSymbol */
-                new TestConfig("node-shapes", AREA_DEFAULT),
-
-                /** Tests that StyledMapRenderer#drawWay respects width */
-                new TestConfig("way-width", AREA_DEFAULT)
-
-                ).map(e -> new Object[] {e})
-                .collect(Collectors.toList());
-    }
-
-    /**
-     * @param testConfig The config to use for this test.
-     */
-    public MapCSSRendererTest(TestConfig testConfig) {
-        this.testConfig = testConfig;
-    }
-
-    /**
-     * Run the test using {@link #testConfig}
-     * @throws Exception if an error occurs
-     */
-    @Test
-    @Ignore("not ready")
-    public void testRender() throws Exception {
-        // load the data
-        DataSet dataSet = testConfig.getOsmDataSet();
-
-        // load the style
-        MapCSSStyleSource.STYLE_SOURCE_LOCK.writeLock().lock();
-        try {
-            MapPaintStyles.getStyles().clear();
-
-            MapCSSStyleSource source = new MapCSSStyleSource(testConfig.getStyleSourceEntry());
-            source.loadStyleSource();
-            if (!source.getErrors().isEmpty()) {
-                fail("Failed to load style file. Errors: " + source.getErrors());
-            }
-            MapPaintStyles.getStyles().setStyleSources(Arrays.asList(source));
-
-        } finally {
-            MapCSSStyleSource.STYLE_SOURCE_LOCK.writeLock().unlock();
-        }
-
-        // create the renderer
-        BufferedImage image = new BufferedImage(IMAGE_SIZE, IMAGE_SIZE, BufferedImage.TYPE_INT_ARGB);
-        NavigatableComponent nc = new NavigatableComponent() {
-            {
-                setBounds(0, 0, IMAGE_SIZE, IMAGE_SIZE);
-                updateLocationState();
-            }
-
-            @Override
-            protected boolean isVisibleOnScreen() {
-                return true;
-            }
-
-            @Override
-            public Point getLocationOnScreen() {
-                return new Point(0, 0);
-            }
-        };
-        nc.zoomTo(testConfig.testArea);
-        dataSet.allPrimitives().stream().forEach(n -> n.setHighlighted(n.isKeyTrue("highlight")));
-        new StyledMapRenderer(image.createGraphics(), nc, false).render(dataSet, false, testConfig.testArea);
-
-        BufferedImage reference = testConfig.getReference();
-
-        // now compute differences:
-        assertEquals(IMAGE_SIZE, reference.getWidth());
-        assertEquals(IMAGE_SIZE, reference.getHeight());
-
-        StringBuilder differences = new StringBuilder();
-
-        for (int y = 0; y < reference.getHeight(); y++) {
-            for (int x = 0; x < reference.getWidth(); x++) {
-                int expected = reference.getRGB(x, y);
-                int result = image.getRGB(x, y);
-                if (expected != result && differences.length() < 500) {
-                    differences.append("\nDifference at ")
-                               .append(x)
-                               .append(",")
-                               .append(y)
-                               .append(": Expected ")
-                               .append(Integer.toHexString(expected))
-                               .append(" but got ")
-                               .append(Integer.toHexString(result));
-                }
-            }
-        }
-
-        if (differences.length() > 0) {
-            // You can use this to debug:
-            ImageIO.write(image, "png", new File(testConfig.getTestDirectory() + "/test-output.png"));
-            fail("Images for test " + testConfig.testDirectory + " differ: " + differences.toString());
-        }
-    }
-
-    private static class TestConfig {
-        private final String testDirectory;
-        private final Bounds testArea;
-
-        TestConfig(String testDirectory, Bounds testArea) {
-            this.testDirectory = testDirectory;
-            this.testArea = testArea;
-        }
-
-        public BufferedImage getReference() throws IOException {
-            return ImageIO.read(new File(getTestDirectory() + "/reference.png"));
-        }
-
-        private String getTestDirectory() {
-            return TestUtils.getTestDataRoot() + TEST_DATA_BASE + testDirectory;
-        }
-
-        public SourceEntry getStyleSourceEntry() {
-            return new SourceEntry(getTestDirectory() + "/style.mapcss",
-                    "test style", "a test style", true // active
-            );
-        }
-
-        public DataSet getOsmDataSet() throws FileNotFoundException, IllegalDataException {
-            return OsmReader.parseDataSet(new FileInputStream(getTestDirectory() + "/data.osm"), null);
-        }
-
-        @Override
-        public String toString() {
-            return "TestConfig [testDirectory=" + testDirectory + ", testArea=" + testArea + ']';
-        }
-    }
-}
diff --git a/test/unit/org/openstreetmap/josm/gui/preferences/map/MapPaintPreferenceTestIT.java b/test/unit/org/openstreetmap/josm/gui/preferences/map/MapPaintPreferenceTestIT.java
index b01fa27..5965b1d 100644
--- a/test/unit/org/openstreetmap/josm/gui/preferences/map/MapPaintPreferenceTestIT.java
+++ b/test/unit/org/openstreetmap/josm/gui/preferences/map/MapPaintPreferenceTestIT.java
@@ -56,6 +56,8 @@ public class MapPaintPreferenceTestIT {
         ImageProvider.clearCache();
         Collection<ExtendedSourceEntry> sources = new MapPaintPreference.MapPaintSourceEditor()
                 .loadAndGetAvailableSources();
+        // Drop everything from yopaseopor, too many errors
+        sources.removeIf(x -> x.url.contains("yopaseopor/"));
         assertFalse(sources.isEmpty());
         Map<String, Collection<Throwable>> allErrors = new HashMap<>();
         Map<String, Collection<String>> allWarnings = new HashMap<>();
@@ -88,8 +90,7 @@ public class MapPaintPreferenceTestIT {
                     if (!errors.isEmpty()) {
                         allErrors.put(source.url, errors);
                     }
-                    if (!warnings.isEmpty() && !source.url.contains("yopaseopor/")) {
-                        // ignore https://github.com/yopaseopor/traffic_signs_style_JOSM because of far too frequent missing icons errors
+                    if (!warnings.isEmpty()) {
                         allWarnings.put(source.url, warnings);
                     }
                 } else if (!source.url.contains("www.freietonne.de")) {
diff --git a/test/unit/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialogTest.java b/test/unit/org/openstreetmap/josm/gui/widgets/AutoAdjustingSplitPaneTest.java
similarity index 71%
rename from test/unit/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialogTest.java
rename to test/unit/org/openstreetmap/josm/gui/widgets/AutoAdjustingSplitPaneTest.java
index fd00f86..2ac58b5 100644
--- a/test/unit/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialogTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/widgets/AutoAdjustingSplitPaneTest.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.conflict.tags;
+package org.openstreetmap.josm.gui.widgets;
 
 import static org.junit.Assert.assertEquals;
 
@@ -9,15 +9,14 @@ import javax.swing.JSplitPane;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.gui.conflict.tags.CombinePrimitiveResolverDialog.AutoAdjustingSplitPane;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
- * Unit tests of {@link CombinePrimitiveResolverDialog} class.
+ * Unit tests of {@link AutoAdjustingSplitPane} class.
  */
-public class CombinePrimitiveResolverDialogTest {
+public class AutoAdjustingSplitPaneTest {
 
     /**
      * Setup test.
@@ -27,11 +26,11 @@ public class CombinePrimitiveResolverDialogTest {
     public JOSMTestRules test = new JOSMTestRules();
 
     /**
-     * Unit test of {@link CombinePrimitiveResolverDialog.AutoAdjustingSplitPane} class.
+     * Unit test of {@link AutoAdjustingSplitPane} class.
      */
     @Test
     public void testAutoAdjustingSplitPane() {
-        AutoAdjustingSplitPane pane = new CombinePrimitiveResolverDialog.AutoAdjustingSplitPane(JSplitPane.VERTICAL_SPLIT);
+        AutoAdjustingSplitPane pane = new AutoAdjustingSplitPane(JSplitPane.VERTICAL_SPLIT);
         assertEquals(-1, pane.getDividerLocation());
         assertEquals(0, pane.getHeight());
         pane.propertyChange(new PropertyChangeEvent(this, null, null, null));
diff --git a/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java b/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java
index 82c780c..5b7ecdd 100644
--- a/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java
+++ b/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java
@@ -14,6 +14,7 @@ import org.junit.runners.model.Statement;
 import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.projection.Projections;
+import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.io.OsmApiInitializationException;
@@ -43,6 +44,7 @@ public class JOSMTestRules implements TestRule {
     private boolean useProjection;
     private boolean commands;
     private boolean allowMemoryManagerLeaks;
+    private boolean useMapStyles;
 
     /**
      * Disable the default timeout for this test. Use with care.
@@ -155,6 +157,17 @@ public class JOSMTestRules implements TestRule {
         return this;
     }
 
+    /**
+     * Use map styles in this test.
+     * @return this instance, for easy chaining
+     * @since 11777
+     */
+    public JOSMTestRules mapStyles() {
+        preferences();
+        useMapStyles = true;
+        return this;
+    }
+
     @Override
     public Statement apply(Statement base, Description description) {
         Statement statement = base;
@@ -234,6 +247,11 @@ public class JOSMTestRules implements TestRule {
             Main.determinePlatformHook();
         }
 
+        if (useMapStyles) {
+            // Reset the map paint styles.
+            MapPaintStyles.readFromPreferences();
+        }
+
         if (commands) {
             // TODO: Implement a more selective version of this once Main is restructured.
             JOSMFixture.createUnitTestFixture().init(true);
diff --git a/test/unit/org/openstreetmap/josm/tools/ExifReaderTest.java b/test/unit/org/openstreetmap/josm/tools/ExifReaderTest.java
index f68e429..afe559e 100644
--- a/test/unit/org/openstreetmap/josm/tools/ExifReaderTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/ExifReaderTest.java
@@ -116,6 +116,22 @@ public class ExifReaderTest {
     }
 
     /**
+     * Test speed extraction
+     */
+    @Test
+    public void testReadSpeed() {
+        assertEquals(Double.valueOf(12.3), ExifReader.readSpeed(new File("data_nodist/exif-example_speed_ele.jpg")));
+    }
+
+    /**
+     * Test elevation extraction
+     */
+    @Test
+    public void testReadElevation() {
+        assertEquals(Double.valueOf(23.4), ExifReader.readElevation(new File("data_nodist/exif-example_speed_ele.jpg")));
+    }
+
+    /**
      * Non-regression test for ticket <a href="https://josm.openstreetmap.de/ticket/11685">#11685</a>
      * @throws IOException if an error occurs during reading
      */
diff --git a/tools/japicc/japi-compliance-checker.pl b/tools/japicc/japi-compliance-checker.pl
index a9fc6c1..9a290a2 100644
--- a/tools/japicc/japi-compliance-checker.pl
+++ b/tools/japicc/japi-compliance-checker.pl
@@ -1,12 +1,11 @@
 #!/usr/bin/perl
 ###########################################################################
-# Java API Compliance Checker (JAPICC) 1.8
+# Java API Compliance Checker (JAPICC) 2.1
 # A tool for checking backward compatibility of a Java library API
 #
 # Written by Andrey Ponomarenko
 #
-# Copyright (C) 2011 Institute for System Programming, RAS
-# Copyright (C) 2011-2016 Andrey Ponomarenko's ABI Laboratory
+# Copyright (C) 2011-2017 Andrey Ponomarenko's ABI Laboratory
 #
 # PLATFORMS
 # =========
@@ -39,69 +38,46 @@ use Getopt::Long;
 Getopt::Long::Configure ("posix_default", "no_ignore_case", "permute");
 use File::Path qw(mkpath rmtree);
 use File::Temp qw(tempdir);
-use File::Copy qw(copy);
-use File::Spec::Functions qw(abs2rel);
+use File::Basename qw(dirname);
 use Cwd qw(abs_path cwd);
 use Data::Dumper;
-use Digest::MD5 qw(md5_hex);
-use Config;
-
-my $TOOL_VERSION = "1.8";
-my $API_DUMP_VERSION = "2.0";
-my $API_DUMP_MAJOR = majorVersion($API_DUMP_VERSION);
-
-my ($Help, $ShowVersion, %Descriptor, $TargetLibraryName, $CheckSeparately,
-$TestSystem, $DumpAPI, $ClassListPath, $ClientPath, $StrictCompat,
-$DumpVersion, $BinaryOnly, $TargetTitle, %TargetVersion, $SourceOnly,
-$ShortMode, $KeepInternal, $OutputReportPath, $BinaryReportPath,
-$SourceReportPath, $Debug, $Quick, $SortDump, $SkipDeprecated, $SkipClassesList,
-$ShowAccess, $AffectLimit, $JdkPath, $SkipInternalPackages, $HideTemplates,
-$HidePackages, $ShowPackages, $Minimal, $AnnotationsListPath,
-$SkipPackagesList, $OutputDumpPath, $AllAffected, $Compact,
-$SkipAnnotationsListPath, $ExternCss, $ExternJs, $SkipInternalTypes,
-$AddedAnnotations, $RemovedAnnotations, $CountMethods, %DepDump, $OldStyle);
-
-my $CmdName = get_filename($0);
-my $OSgroup = get_OSgroup();
-my $ORIG_DIR = cwd();
-my $TMP_DIR = tempdir(CLEANUP=>1);
-my $ARG_MAX = get_ARG_MAX();
-my $REPRODUCIBLE = 1;
-my $MD5_LEN = 8;
-
-my %OS_Archive = (
-    "windows"=>"zip",
-    "default"=>"tar.gz"
-);
 
-my %ERROR_CODE = (
-    # Compatible verdict
-    "Compatible"=>0,
-    "Success"=>0,
-    # Incompatible verdict
-    "Incompatible"=>1,
-    # Undifferentiated error code
-    "Error"=>2,
-    # System command is not found
-    "Not_Found"=>3,
-    # Cannot access input files
-    "Access_Error"=>4,
-    # Invalid input API dump
-    "Invalid_Dump"=>7,
-    # Incompatible version of API dump
-    "Dump_Version"=>8,
-    # Cannot find a module
-    "Module_Error"=>9
-);
+my $TOOL_VERSION = "2.1";
+my $API_DUMP_VERSION = "2.1";
+my $API_DUMP_VERSION_MIN = "2.0";
+
+# Internal modules
+my $MODULES_DIR = getModules();
+push(@INC, dirname($MODULES_DIR));
+
+# Basic modules
+my %LoadedModules = ();
+loadModule("Basic");
+loadModule("Input");
+loadModule("Path");
+loadModule("Logging");
+loadModule("Utils");
+loadModule("TypeAttr");
+loadModule("Filter");
+loadModule("SysFiles");
+loadModule("Descriptor");
+loadModule("Mangling");
+
+# Rules DB
+my %RULES_PATH = (
+"Binary" => $MODULES_DIR."/RulesBin.xml",
+"Source" => $MODULES_DIR."/RulesSrc.xml");
+
+my $CmdName = getFilename($0);
 
 my %HomePage = (
     "Dev"=>"https://github.com/lvc/japi-compliance-checker",
-    "Wiki"=>"http://ispras.linuxbase.org/index.php/Java_API_Compliance_Checker"
+    "Doc"=>"https://lvc.github.io/japi-compliance-checker/"
 );
 
 my $ShortUsage = "Java API Compliance Checker (JAPICC) $TOOL_VERSION
 A tool for checking backward compatibility of a Java library API
-Copyright (C) 2016 Andrey Ponomarenko's ABI Laboratory
+Copyright (C) 2017 Andrey Ponomarenko's ABI Laboratory
 License: GNU LGPL or GNU GPL
 
 Usage: $CmdName [options]
@@ -115,100 +91,100 @@ if($#ARGV==-1)
     exit(0);
 }
 
-GetOptions("h|help!" => \$Help,
-  "v|version!" => \$ShowVersion,
-  "dumpversion!" => \$DumpVersion,
+GetOptions("h|help!" => \$In::Opt{"Help"},
+  "v|version!" => \$In::Opt{"ShowVersion"},
+  "dumpversion!" => \$In::Opt{"DumpVersion"},
 # general options
-  "l|lib|library=s" => \$TargetLibraryName,
-  "d1|old|o=s" => \$Descriptor{1}{"Path"},
-  "d2|new|n=s" => \$Descriptor{2}{"Path"},
+  "l|lib|library=s" => \$In::Opt{"TargetLib"},
+  "d1|old|o=s" => \$In::Desc{1}{"Path"},
+  "d2|new|n=s" => \$In::Desc{2}{"Path"},
 # extra options
-  "client|app=s" => \$ClientPath,
-  "binary|bin!" => \$BinaryOnly,
-  "source|src!" => \$SourceOnly,
-  "v1|version1|vnum=s" => \$TargetVersion{1},
-  "v2|version2=s" => \$TargetVersion{2},
-  "s|strict!" => \$StrictCompat,
-  "keep-internal!" => \$KeepInternal,
-  "skip-internal-packages|skip-internal=s" => \$SkipInternalPackages,
-  "skip-internal-types=s" => \$SkipInternalTypes,
-  "dump|dump-api=s" => \$DumpAPI,
-  "classes-list=s" => \$ClassListPath,
-  "annotations-list=s" => \$AnnotationsListPath,
-  "skip-annotations-list=s" => \$SkipAnnotationsListPath,
-  "skip-deprecated!" => \$SkipDeprecated,
-  "skip-classes=s" => \$SkipClassesList,
-  "skip-packages=s" => \$SkipPackagesList,
-  "short" => \$ShortMode,
-  "dump-path=s" => \$OutputDumpPath,
-  "report-path=s" => \$OutputReportPath,
-  "bin-report-path=s" => \$BinaryReportPath,
-  "src-report-path=s" => \$SourceReportPath,
-  "quick!" => \$Quick,
-  "sort!" => \$SortDump,
-  "show-access!" => \$ShowAccess,
-  "limit-affected=s" => \$AffectLimit,
-  "hide-templates!" => \$HideTemplates,
-  "show-packages!" => \$ShowPackages,
-  "compact!" => \$Compact,
-  "added-annotations!" => \$AddedAnnotations,
-  "removed-annotations!" => \$RemovedAnnotations,
-  "count-methods=s" => \$CountMethods,
-  "dep1=s" => \$DepDump{1},
-  "dep2=s" => \$DepDump{2},
-  "old-style!" => \$OldStyle,
+  "client|app=s" => \$In::Opt{"ClientPath"},
+  "binary|bin!" => \$In::Opt{"BinaryOnly"},
+  "source|src!" => \$In::Opt{"SourceOnly"},
+  "v1|version1|vnum=s" => \$In::Desc{1}{"TargetVersion"},
+  "v2|version2=s" => \$In::Desc{2}{"TargetVersion"},
+  "s|strict!" => \$In::Opt{"StrictCompat"},
+  "keep-internal!" => \$In::Opt{"KeepInternal"},
+  "skip-internal-packages|skip-internal=s" => \$In::Opt{"SkipInternalPackages"},
+  "skip-internal-types=s" => \$In::Opt{"SkipInternalTypes"},
+  "dump|dump-api=s" => \$In::Opt{"DumpAPI"},
+  "classes-list=s" => \$In::Opt{"ClassListPath"},
+  "annotations-list=s" => \$In::Opt{"AnnotationsListPath"},
+  "skip-annotations-list=s" => \$In::Opt{"SkipAnnotationsListPath"},
+  "skip-deprecated!" => \$In::Opt{"SkipDeprecated"},
+  "skip-classes=s" => \$In::Opt{"SkipClassesList"},
+  "skip-packages=s" => \$In::Opt{"SkipPackagesList"},
+  "short" => \$In::Opt{"ShortMode"},
+  "dump-path=s" => \$In::Opt{"OutputDumpPath"},
+  "report-path=s" => \$In::Opt{"OutputReportPath"},
+  "bin-report-path=s" => \$In::Opt{"BinaryReportPath"},
+  "src-report-path=s" => \$In::Opt{"SourceReportPath"},
+  "quick!" => \$In::Opt{"Quick"},
+  "sort!" => \$In::Opt{"SortDump"},
+  "show-access!" => \$In::Opt{"ShowAccess"},
+  "limit-affected=s" => \$In::Opt{"AffectLimit"},
+  "hide-templates!" => \$In::Opt{"HideTemplates"},
+  "show-packages!" => \$In::Opt{"ShowPackages"},
+  "compact!" => \$In::Opt{"Compact"},
+  "added-annotations!" => \$In::Opt{"AddedAnnotations"},
+  "removed-annotations!" => \$In::Opt{"RemovedAnnotations"},
+  "count-methods=s" => \$In::Opt{"CountMethods"},
+  "dep1=s" => \$In::Desc{1}{"DepDump"},
+  "dep2=s" => \$In::Desc{2}{"DepDump"},
+  "old-style!" => \$In::Opt{"OldStyle"},
 # other options
-  "test!" => \$TestSystem,
-  "debug!" => \$Debug,
-  "title=s" => \$TargetTitle,
-  "jdk-path=s" => \$JdkPath,
-  "external-css=s" => \$ExternCss,
-  "external-js=s" => \$ExternJs,
+  "test!" => \$In::Opt{"TestTool"},
+  "debug!" => \$In::Opt{"Debug"},
+  "title=s" => \$In::Opt{"TargetTitle"},
+  "jdk-path=s" => \$In::Opt{"JdkPath"},
+  "external-css=s" => \$In::Opt{"ExternCss"},
+  "external-js=s" => \$In::Opt{"ExternJs"},
 # deprecated
-  "minimal!" => \$Minimal,
-  "hide-packages!" => \$HidePackages,
+  "minimal!" => \$In::Opt{"Minimal"},
+  "hide-packages!" => \$In::Opt{"HidePackages"},
 # private
-  "all-affected!" => \$AllAffected
-) or ERR_MESSAGE();
+  "all-affected!" => \$In::Opt{"AllAffected"}
+) or errMsg();
 
 if(@ARGV)
 { 
     if($#ARGV==1)
     { # japi-compliance-checker OLD.jar NEW.jar
-        $Descriptor{1}{"Path"} = $ARGV[0];
-        $Descriptor{2}{"Path"} = $ARGV[1];
+        $In::Desc{1}{"Path"} = $ARGV[0];
+        $In::Desc{2}{"Path"} = $ARGV[1];
     }
     else {
-        ERR_MESSAGE();
+        errMsg();
     }
 }
 
-sub ERR_MESSAGE()
+sub errMsg()
 {
     printMsg("INFO", "\n".$ShortUsage);
-    exit($ERROR_CODE{"Error"});
+    exit(getErrorCode("Error"));
 }
 
-my $AR_EXT = getAR_EXT($OSgroup);
-
-my $HelpMessage="
+my $HelpMessage = "
 NAME:
   Java API Compliance Checker ($CmdName)
   Check backward compatibility of a Java library API
 
 DESCRIPTION:
   Java API Compliance Checker (JAPICC) is a tool for checking backward
-  binary/source compatibility of a Java library API. The tool checks classes
+  binary/source compatibility of a Java library API. The tool checks class
   declarations of old and new versions and analyzes changes that may break
-  compatibility: removed class members, added abstract methods, etc. Breakage
-  of the binary compatibility may result in crashing or incorrect behavior of
-  existing clients built with an old version of a library if they run with a
-  new one. Breakage of the source compatibility may result in recompilation
+  compatibility: removed class members, added abstract methods, etc.
+  
+  Break of the binary compatibility may result in crash or incorrect behavior
+  of existing clients built with an old library version if they run with a
+  new one. Break of the source compatibility may result in recompilation
   errors with a new library version.
 
-  JAPICC is intended for library developers and operating system maintainers
-  who are interested in ensuring backward compatibility (i.e. allow old clients
-  to run or to be recompiled with a new version of a library).
+  The tool is intended for developers of software libraries and maintainers
+  of operating systems who are interested in ensuring backward compatibility,
+  i.e. allow old clients to run or to be recompiled with newer library
+  versions.
 
   This tool is free software: you can redistribute it and/or modify it
   under the terms of the GNU LGPL or GNU GPL.
@@ -216,9 +192,10 @@ DESCRIPTION:
 USAGE:
   $CmdName [options]
 
-EXAMPLE:
+EXAMPLE 1:
   $CmdName OLD.jar NEW.jar
-    OR
+
+EXAMPLE 2:
   $CmdName -lib NAME -old OLD.xml -new NEW.xml
   OLD.xml and NEW.xml are XML-descriptors:
 
@@ -243,14 +220,14 @@ INFORMATION OPTIONS:
       Print the tool version ($TOOL_VERSION) and don't do anything else.
 
 GENERAL OPTIONS:
-  -l|-lib|-library NAME
+  -l|-library NAME
       Library name (without version).
 
-  -d1|-old|-o PATH
-      Descriptor of 1st (old) library version.
+  -old|-d1 PATH
+      Descriptor of the 1st (old) library version.
       It may be one of the following:
       
-         1. Java ARchive (*.jar)
+         1. Java archive (*.jar)
          2. XML-descriptor (VERSION.xml file):
 
               <version>
@@ -267,28 +244,27 @@ GENERAL OPTIONS:
          
          3. API dump generated by -dump option
 
-      If you are using 1, 4-6 descriptor types then you should
+      If you are using *.jar as a descriptor then you should
       specify version numbers with -v1 and -v2 options too.
+      If version numbers are not specified then the tool will
+      try to detect them automatically.
 
-      If you are using *.jar as a descriptor then the tool will try to
-      get implementation version from MANIFEST.MF file.
-
-  -d2|-new|-n PATH
-      Descriptor of 2nd (new) library version.
+  -new|-d2 PATH
+      Descriptor of the 2nd (new) library version.
 
 EXTRA OPTIONS:
   -client|-app PATH
-      This option allows to specify the client Java ARchive that should be
+      This option allows to specify the client Java archive that should be
       checked for portability to the new library version.
-      
+
   -binary|-bin
       Show \"Binary\" compatibility problems only.
       Generate report to \"bin_compat_report.html\".
-      
+
   -source|-src
       Show \"Source\" compatibility problems only.
       Generate report to \"src_compat_report.html\".
-      
+
   -v1|-version1 NUM
       Specify 1st API version outside the descriptor. This option is needed
       if you have prefered an alternative descriptor type (see -d1 option).
@@ -322,7 +298,7 @@ EXTRA OPTIONS:
   -dump|-dump-api PATH
       Dump library API to gzipped TXT format file. You can transfer it
       anywhere and pass instead of the descriptor. Also it may be used
-      for debugging the tool. Compatible dump versions: $API_DUMP_MAJOR.0<=V<=$API_DUMP_VERSION
+      for debugging the tool.
       
   -classes-list PATH
       This option allows to specify a file with a list
@@ -351,9 +327,9 @@ EXTRA OPTIONS:
       Do not list added/removed methods.
   
   -dump-path PATH
-      Specify a *.api.$AR_EXT or *.api file path where to generate an API dump.
+      Specify a *.dump file path where to generate an API dump.
       Default: 
-          abi_dumps/LIB_NAME/LIB_NAME_VERSION.api.$AR_EXT
+          api_dumps/LIB_NAME/VERSION/API.dump
 
   -report-path PATH
       Path to compatibility report.
@@ -454,156 +430,19 @@ EXIT CODES:
     0 - Compatible. The tool has run without any errors.
     non-zero - Incompatible or the tool has run with errors.
 
-MORE INFORMATION:
-    ".$HomePage{"Wiki"}."
-    ".$HomePage{"Dev"}."\n\n";
+MORE INFO:
+    ".$HomePage{"Doc"}."
+    ".$HomePage{"Dev"};
 
-sub HELP_MESSAGE()
-{ # -help
+sub helpMsg() {
     printMsg("INFO", $HelpMessage."\n");
 }
 
-my %TypeProblems_Kind=(
-    "Binary"=>{
-        "NonAbstract_Class_Added_Abstract_Method"=>"High",
-        "Abstract_Class_Added_Abstract_Method"=>"Safe",
-        "Abstract_Class_Added_Abstract_Method_Invoked_By_Others"=>"Medium",
-        "Class_Removed_Abstract_Method"=>"High",
-        "Interface_Added_Abstract_Method"=>"Safe",
-        "Interface_Added_Abstract_Method_Invoked_By_Others"=>"Medium",
-        "Interface_Removed_Abstract_Method"=>"High",
-        "Removed_Class"=>"High",
-        "Removed_Interface"=>"High",
-        "Class_Method_Became_Abstract"=>"High",
-        "Class_Method_Became_NonAbstract"=>"Low",
-        "Interface_Method_Became_NonDefault"=>"High",
-        "Interface_Method_Became_Default"=>"Safe",
-        "Added_Super_Class"=>"Low",
-        "Abstract_Class_Added_Super_Abstract_Class"=>"Safe",
-        "Abstract_Class_Added_Super_Abstract_Class_Invoked_By_Others"=>"Medium",
-        "Removed_Super_Class"=>"Medium",
-        "Changed_Super_Class"=>"Medium",
-        "Abstract_Class_Added_Super_Interface"=>"Safe",
-        "Abstract_Class_Added_Super_Interface_Invoked_By_Others"=>"Medium",
-        "Abstract_Class_Added_Super_Interface_With_Implemented_Methods"=>"Safe",
-        "Class_Removed_Super_Interface"=>"High",
-        "Interface_Added_Super_Interface"=>"Safe",
-        "Interface_Added_Super_Interface_Used_By_Others"=>"Medium",
-        "Interface_Added_Super_Constant_Interface"=>"Low",
-        "Interface_Added_Super_Interface_With_Implemented_Methods"=>"Safe",
-        "Interface_Removed_Super_Interface"=>"High",
-        "Interface_Removed_Super_Constant_Interface"=>"Safe",
-        "Class_Became_Interface"=>"High",
-        "Interface_Became_Class"=>"High",
-        "Class_Became_Final"=>"High",
-        "Class_Became_Abstract"=>"High",
-        "Class_Added_Field"=>"Safe",
-        "Interface_Added_Field"=>"Safe",
-        "Removed_NonConstant_Field"=>"High",
-        "Removed_Constant_Field"=>"Low",
-        "Renamed_Field"=>"High",
-        "Renamed_Constant_Field"=>"Low",
-        "Changed_Field_Type"=>"High",
-        "Changed_Field_Access"=>"High",
-        "Changed_Final_Field_Value"=>"Medium",
-        "Changed_Final_Version_Field_Value"=>"Low",
-        "Field_Became_Final"=>"Medium",
-        "Field_Became_NonFinal"=>"Low",
-        "NonConstant_Field_Became_Static"=>"High",
-        "NonConstant_Field_Became_NonStatic"=>"High",
-        "Class_Overridden_Method"=>"Low",
-        "Class_Method_Moved_Up_Hierarchy"=>"Low"
-    },
-    "Source"=>{
-        "NonAbstract_Class_Added_Abstract_Method"=>"High",
-        "Abstract_Class_Added_Abstract_Method"=>"High",
-        "Abstract_Class_Added_Abstract_Method_Invoked_By_Others"=>"High",
-        "Interface_Added_Abstract_Method"=>"High",
-        "Interface_Added_Abstract_Method_Invoked_By_Others"=>"High",
-        "Class_Removed_Abstract_Method"=>"High",
-        "Interface_Removed_Abstract_Method"=>"High",
-        "Removed_Class"=>"High",
-        "Removed_Interface"=>"High",
-        "Class_Method_Became_Abstract"=>"High",
-        "Class_Method_Became_NonAbstract"=>"Safe",
-        "Interface_Method_Became_NonDefault"=>"High",
-        "Interface_Method_Became_Default"=>"Safe",
-        "Added_Super_Class"=>"Low",
-        "Abstract_Class_Added_Super_Abstract_Class"=>"High",
-        "Abstract_Class_Added_Super_Abstract_Class_Invoked_By_Others"=>"High",
-        "Removed_Super_Class"=>"Medium",
-        "Changed_Super_Class"=>"Medium",
-        "Abstract_Class_Added_Super_Interface"=>"High",
-        "Abstract_Class_Added_Super_Interface_Invoked_By_Others"=>"High",
-        "Abstract_Class_Added_Super_Interface_With_Implemented_Methods"=>"Safe",
-        "Class_Removed_Super_Interface"=>"High",
-        "Interface_Added_Super_Interface"=>"High",
-        "Interface_Added_Super_Interface_Used_By_Others"=>"High",
-        "Interface_Added_Super_Constant_Interface"=>"Low",
-        "Interface_Added_Super_Interface_With_Implemented_Methods"=>"Safe",
-        "Interface_Removed_Super_Interface"=>"High",
-        "Interface_Removed_Super_Constant_Interface"=>"High",
-        "Class_Became_Interface"=>"High",
-        "Interface_Became_Class"=>"High",
-        "Class_Became_Final"=>"High",
-        "Class_Became_Abstract"=>"High",
-        "Class_Added_Field"=>"Safe",
-        "Interface_Added_Field"=>"Safe",
-        "Removed_NonConstant_Field"=>"High",
-        "Removed_Constant_Field"=>"High",
-        "Renamed_Field"=>"High",
-        "Renamed_Constant_Field"=>"High",
-        "Changed_Field_Type"=>"High",
-        "Changed_Field_Access"=>"High",
-        "Field_Became_Final"=>"Medium",
-        "Constant_Field_Became_NonStatic"=>"High",
-        "NonConstant_Field_Became_NonStatic"=>"High",
-        "Removed_Annotation"=>"High"
-    }
-);
-
-my %MethodProblems_Kind=(
-    "Binary"=>{
-        "Added_Method"=>"Safe",
-        "Removed_Method"=>"High",
-        "Method_Became_Static"=>"High",
-        "Method_Became_NonStatic"=>"High",
-        "NonStatic_Method_Became_Final"=>"Medium",
-        "Changed_Method_Access"=>"High",
-        "Method_Became_Synchronized"=>"Low",
-        "Method_Became_NonSynchronized"=>"Low",
-        "Method_Became_Abstract"=>"High",
-        "Method_Became_NonAbstract"=>"Low",
-        "Method_Became_NonDefault"=>"High",
-        "Method_Became_Default"=>"Safe",
-        "NonAbstract_Method_Added_Checked_Exception"=>"Low",
-        "NonAbstract_Method_Removed_Checked_Exception"=>"Low",
-        "Added_Unchecked_Exception"=>"Low",
-        "Removed_Unchecked_Exception"=>"Low",
-        "Variable_Arity_To_Array"=>"Low",# not implemented yet
-        "Changed_Method_Return_From_Void"=>"High"
-    },
-    "Source"=>{
-        "Added_Method"=>"Safe",
-        "Removed_Method"=>"High",
-        "Method_Became_Static"=>"Low",
-        "Method_Became_NonStatic"=>"High",
-        "Static_Method_Became_Final"=>"Medium",
-        "NonStatic_Method_Became_Final"=>"Medium",
-        "Changed_Method_Access"=>"High",
-        "Method_Became_Abstract"=>"High",
-        "Method_Became_NonAbstract"=>"Safe",
-        "Method_Became_NonDefault"=>"High",
-        "Method_Became_Default"=>"Safe",
-        "Abstract_Method_Added_Checked_Exception"=>"Medium",
-        "NonAbstract_Method_Added_Checked_Exception"=>"Medium",
-        "Abstract_Method_Removed_Checked_Exception"=>"Medium",
-        "NonAbstract_Method_Removed_Checked_Exception"=>"Medium"
-    }
-);
+#Aliases
+my (%MethodInfo, %TypeInfo, %TName_Tid) = ();
 
+#Separate checked and unchecked exceptions
 my %KnownRuntimeExceptions= map {$_=>1} (
-# To separate checked- and unchecked- exceptions
     "java.lang.AnnotationTypeMismatchException",
     "java.lang.ArithmeticException",
     "java.lang.ArrayStoreException",
@@ -655,48 +494,6 @@ my %KnownRuntimeExceptions= map {$_=>1} (
     "java.lang.WrongMethodTypeException"
 );
 
-my %Slash_Type=(
-    "default"=>"/",
-    "windows"=>"\\"
-);
-
-my $SLASH = $Slash_Type{$OSgroup}?$Slash_Type{$OSgroup}:$Slash_Type{"default"};
-
-my %OS_AddPath=(
-# this data needed if tool can't detect it automatically
-"macos"=>{
-    "bin"=>{"/Developer/usr/bin"=>1}},
-"beos"=>{
-    "bin"=>{"/boot/common/bin"=>1,"/boot/system/bin"=>1,"/boot/develop/abi"=>1}}
-);
-
-#Global variables
-my %RESULT;
-my $ExtractCounter = 0;
-my %Cache;
-my $TOP_REF = "<a class='top_ref' href='#Top'>to the top</a>";
-my %DEBUG_PATH;
-
-#Types
-my %TypeInfo;
-my $TYPE_ID = 0;
-my %CheckedTypes;
-my %TName_Tid;
-my %Class_Constructed;
-
-#Classes
-my %ClassList_User;
-my %UsedMethods_Client;
-my %UsedFields_Client;
-my %UsedClasses_Client;
-my %LibArchives;
-my %Class_Methods;
-my %Class_AbstractMethods;
-my %Class_Fields;
-my %MethodUsed;
-my %ClassMethod_AddedUsed;
-# my %FieldUsed;
-
 #java.lang.Object
 my %JavaObjectMethod = (
     
@@ -713,36 +510,39 @@ my %JavaObjectMethod = (
     "java/lang/Object.wait:(JI)V" => 1
 );
 
-#Annotations
-my %AnnotationList_User;
-my %SkipAnnotationList_User;
+#Global variables
+my %Cache;
+my %RESULT;
+my $TOP_REF = "<a class='top_ref' href='#Top'>to the top</a>";
+
+#Types
+my %CheckedTypes;
+
+#Classes
+my %LibArchives;
+my %Class_Methods;
+my %Class_AbstractMethods;
+my %Class_Fields;
+my %ClassMethod_AddedUsed;
+my %Class_Constructed;
 
 #Methods
 my %CheckedMethods;
-my %tr_name;
+my %MethodUsed;
 
 #Merging
-my %MethodInfo;
-my $Version;
 my %AddedMethod_Abstract;
 my %RemovedMethod_Abstract;
 my %ChangedReturnFromVoid;
-my %SkipClasses;
-my %SkipPackages;
-my %KeepPackages;
-my %SkippedPackage;
+my %CompatRules;
+my %IncompleteRules;
 
 #Report
 my %TypeChanges;
 
 #Recursion locks
-my @RecurSymlink;
 my @RecurTypes;
 
-#System
-my %SystemPaths;
-my %DefaultBinPaths;
-
 #Problem descriptions
 my %CompatProblems;
 my %TotalAffected;
@@ -759,1205 +559,816 @@ my $ContentDivStart = "<div id=\"CONTENT_ID\" style=\"display:none;\">\n";
 my $ContentDivEnd = "</div>\n";
 my $Content_Counter = 0;
 
-#Modes
-my $JoinReport = 1;
-my $DoubleReport = 0;
-
-sub get_CmdPath($)
-{
-    my $Name = $_[0];
-    return "" if(not $Name);
-    if(defined $Cache{"get_CmdPath"}{$Name}) {
-        return $Cache{"get_CmdPath"}{$Name};
-    }
-    my $Path = search_Cmd($Name);
-    if(not $Path and $OSgroup eq "windows")
-    { # search for *.exe file
-        $Path=search_Cmd($Name.".exe");
-    }
-    if (not $Path) {
-        $Path=search_Cmd_Path($Name);
-    }
-    if($Path=~/\s/) {
-        $Path = "\"".$Path."\"";
-    }
-    return ($Cache{"get_CmdPath"}{$Name} = $Path);
-}
-
-sub search_Cmd($)
+sub getModules()
 {
-    my $Name = $_[0];
-    return "" if(not $Name);
-    if(defined $Cache{"search_Cmd"}{$Name}) {
-        return $Cache{"search_Cmd"}{$Name};
+    my $TOOL_DIR = dirname($0);
+    if(not $TOOL_DIR)
+    { # patch for MS Windows
+        $TOOL_DIR = ".";
     }
-    if(defined $JdkPath)
+    my @SEARCH_DIRS = (
+        # tool's directory
+        abs_path($TOOL_DIR),
+        # relative path to modules
+        abs_path($TOOL_DIR)."/../share/japi-compliance-checker",
+        # install path
+        'MODULES_INSTALL_PATH'
+    );
+    foreach my $DIR (@SEARCH_DIRS)
     {
-        if(-x $JdkPath."/".$Name) {
-            return ($Cache{"search_Cmd"}{$Name} = $JdkPath."/".$Name);
+        if($DIR!~/\A(\/|\w+:[\/\\])/)
+        { # relative path
+            $DIR = abs_path($TOOL_DIR)."/".$DIR;
         }
-        
-        if(-x $JdkPath."/bin/".$Name) {
-            return ($Cache{"search_Cmd"}{$Name} = $JdkPath."/bin/".$Name);
+        if(-d $DIR."/modules") {
+            return $DIR."/modules";
         }
     }
-    if(my $DefaultPath = get_CmdPath_Default($Name)) {
-        return ($Cache{"search_Cmd"}{$Name} = $DefaultPath);
-    }
-    return ($Cache{"search_Cmd"}{$Name} = "");
+    
+    print STDERR "ERROR: can't find modules (Did you installed the tool by 'make install' command?)\n";
+    exit(9); # Module_Error
 }
 
-sub search_Cmd_Path($)
+sub loadModule($)
 {
     my $Name = $_[0];
-    return "" if(not $Name);
-    
-    if(defined $Cache{"search_Cmd_Path"}{$Name}) {
-        return $Cache{"search_Cmd_Path"}{$Name};
+    if(defined $LoadedModules{$Name}) {
+        return;
     }
-    
-    if(defined $SystemPaths{"bin"})
+    my $Path = $MODULES_DIR."/Internals/$Name.pm";
+    if(not -f $Path)
     {
-        foreach my $Path (sort {length($a)<=>length($b)} keys(%{$SystemPaths{"bin"}}))
-        {
-            if(-f $Path."/".$Name or -f $Path."/".$Name.".exe") {
-                return ($Cache{"search_Cmd_Path"}{$Name} = joinPath($Path,$Name));
-            }
-        }
+        print STDERR "can't access \'$Path\'\n";
+        exit(2);
     }
-
-    return ($Cache{"search_Cmd_Path"}{$Name} = "");
+    require $Path;
+    $LoadedModules{$Name} = 1;
 }
 
-sub get_CmdPath_Default($)
-{ # search in PATH
-    return "" if(not $_[0]);
-    if(defined $Cache{"get_CmdPath_Default"}{$_[0]}) {
-        return $Cache{"get_CmdPath_Default"}{$_[0]};
+sub readModule($$)
+{
+    my ($Module, $Name) = @_;
+    my $Path = $MODULES_DIR."/Internals/$Module/".$Name;
+    if(not -f $Path) {
+        exitStatus("Module_Error", "can't access \'$Path\'");
     }
-    return ($Cache{"get_CmdPath_Default"}{$_[0]} = get_CmdPath_Default_I($_[0]));
+    return readFile($Path);
 }
 
-sub get_CmdPath_Default_I($)
-{ # search in PATH
-    my $Name = $_[0];
-    if($Name=~/find/)
-    { # special case: search for "find" utility
-        if(`find \"$TMP_DIR\" -maxdepth 0 2>\"$TMP_DIR/null\"`) {
-            return "find";
-        }
-    }
-    if(get_version($Name)) {
-        return $Name;
-    }
-    if($OSgroup eq "windows")
+sub mergeClasses()
+{
+    my %ReportedRemoved = undef;
+    
+    foreach my $ClassName (keys(%{$Class_Methods{1}}))
     {
-        if(`$Name /? 2>\"$TMP_DIR/null\"`) {
-            return $Name;
+        next if(not $ClassName);
+        my $Type1 = getType($TName_Tid{1}{$ClassName}, 1);
+        
+        if($Type1->{"Type"}!~/class|interface/) {
+            next;
         }
-    }
-    if($Name!~/which/)
-    {
-        if(my $WhichCmd = get_CmdPath("which"))
-        {
-            if(`$WhichCmd $Name 2>\"$TMP_DIR/null\"`) {
-                return $Name;
+        
+        if(defined $Type1->{"Access"}
+        and $Type1->{"Access"}=~/private/) {
+            next;
+        }
+        
+        if(not classFilter($Type1, 1, 0)) {
+            next;
+        }
+        
+        my $Type2_Id = $TName_Tid{2}{$ClassName};
+        if(not $Type2_Id)
+        { # classes and interfaces with public methods
+            foreach my $Method (keys(%{$Class_Methods{1}{$ClassName}}))
+            {
+                if(not methodFilter($Method, 1)) {
+                    next;
+                }
+                
+                $CheckedTypes{$ClassName} = 1;
+                $CheckedMethods{$Method} = 1;
+                
+                if($Type1->{"Type"} eq "class")
+                {
+                    %{$CompatProblems{$Method}{"Removed_Class"}{"this"}} = (
+                        "Type_Name"=>$ClassName,
+                        "Target"=>$ClassName);
+                }
+                else
+                {
+                    %{$CompatProblems{$Method}{"Removed_Interface"}{"this"}} = (
+                        "Type_Name"=>$ClassName,
+                        "Target"=>$ClassName);
+                }
+                
+                $ReportedRemoved{$ClassName} = 1;
             }
         }
     }
-    foreach my $Path (sort {length($a)<=>length($b)} keys(%DefaultBinPaths))
+    
+    foreach my $Class_Id (keys(%{$TypeInfo{1}}))
     {
-        if(-f $Path."/".$Name) {
-            return joinPath($Path,$Name);
+        my $Class1 = getType($Class_Id, 1);
+        
+        if($Class1->{"Type"}!~/class|interface/) {
+            next;
         }
-    }
-    return "";
-}
-
-sub showPos($)
-{
-    my $Number = $_[0];
-    if(not $Number) {
-        $Number = 1;
-    }
-    else {
-        $Number = int($Number)+1;
-    }
-    if($Number>3) {
-        return $Number."th";
-    }
-    elsif($Number==1) {
-        return "1st";
-    }
-    elsif($Number==2) {
-        return "2nd";
-    }
-    elsif($Number==3) {
-        return "3rd";
-    }
-    else {
-        return $Number;
-    }
-}
-
-sub getAR_EXT($)
-{
-    my $Target = $_[0];
-    if(my $Ext = $OS_Archive{$Target}) {
-        return $Ext;
-    }
-    return $OS_Archive{"default"};
-}
-
-sub readDescriptor($$)
-{
-    my ($LibVersion, $Content) = @_;
-    return if(not $LibVersion);
-    my $DName = $DumpAPI?"descriptor":"descriptor \"d$LibVersion\"";
-    if(not $Content) {
-        exitStatus("Error", "$DName is empty");
-    }
-    if($Content!~/\</) {
-        exitStatus("Error", "descriptor should be one of the following:\n  Java ARchive, XML descriptor, gzipped API dump or directory with Java ARchives.");
-    }
-    $Content=~s/\/\*(.|\n)+?\*\///g;
-    $Content=~s/<\!--(.|\n)+?-->//g;
-    $Descriptor{$LibVersion}{"Version"} = parseTag(\$Content, "version");
-    $Descriptor{$LibVersion}{"Version"} = $TargetVersion{$LibVersion} if($TargetVersion{$LibVersion});
-    if($Descriptor{$LibVersion}{"Version"} eq "") {
-        exitStatus("Error", "version in the $DName is not specified (<version> section)");
-    }
-    
-    my $DArchives = parseTag(\$Content, "archives");
-    if(not $DArchives){
-        exitStatus("Error", "Java ARchives in the $DName are not specified (<archive> section)");
-    }
-    else
-    {# append the descriptor Java ARchives list
-        if($Descriptor{$LibVersion}{"Archives"}) {
-            $Descriptor{$LibVersion}{"Archives"} .= "\n".$DArchives;
+        
+        if(defined $Class1->{"Access"}
+        and $Class1->{"Access"}=~/private/) {
+            next;
         }
-        else {
-            $Descriptor{$LibVersion}{"Archives"} = $DArchives;
+        
+        if(not classFilter($Class1, 1, 1)) {
+            next;
         }
-        foreach my $Path (split(/\s*\n\s*/, $DArchives))
-        {
-            if(not -e $Path) {
-                exitStatus("Access_Error", "can't access \'$Path\'");
+        
+        my $ClassName = $Class1->{"Name"};
+        
+        if(my $Class2_Id = $TName_Tid{2}{$ClassName})
+        { # classes and interfaces with public static fields
+            if(not defined $Class_Methods{1}{$ClassName})
+            {
+                my $Class2 = getType($Class2_Id, 2);
+                
+                foreach my $Field (keys(%{$Class1->{"Fields"}}))
+                {
+                    my $FieldInfo = $Class1->{"Fields"}{$Field};
+                    
+                    my $FAccess = $FieldInfo->{"Access"};
+                    if($FAccess=~/private/) {
+                        next;
+                    }
+                    
+                    if($FieldInfo->{"Static"})
+                    {
+                        $CheckedTypes{$ClassName} = 1;
+                        
+                        if(not defined $Class2->{"Fields"}{$Field})
+                        {
+                            %{$CompatProblems{".client_method"}{"Removed_NonConstant_Field"}{$Field}}=(
+                                "Target"=>$Field,
+                                "Type_Name"=>$ClassName,
+                                "Type_Type"=>$Class1->{"Type"},
+                                "Field_Type"=>getTypeName($FieldInfo->{"Type"}, 1));
+                        }
+                    }
+                }
+            }
+        }
+        else
+        { # removed
+            if(defined $Class1->{"Annotation"})
+            {
+                %{$CompatProblems{".client_method"}{"Removed_Annotation"}{"this"}} = (
+                    "Type_Name"=>$ClassName,
+                    "Target"=>$ClassName);
+            }
+            
+            if(not defined $Class_Methods{1}{$ClassName})
+            {
+                # classes and interfaces with public static fields
+                if(not defined $ReportedRemoved{$ClassName})
+                {
+                    foreach my $Field (keys(%{$Class1->{"Fields"}}))
+                    {
+                        my $FieldInfo = $Class1->{"Fields"}{$Field};
+                        
+                        my $FAccess = $FieldInfo->{"Access"};
+                        if($FAccess=~/private/) {
+                            next;
+                        }
+                        
+                        if($FieldInfo->{"Static"})
+                        {
+                            $CheckedTypes{$ClassName} = 1;
+                            
+                            if($Class1->{"Type"} eq "class")
+                            {
+                                %{$CompatProblems{".client_method"}{"Removed_Class"}{"this"}} = (
+                                    "Type_Name"=>$ClassName,
+                                    "Target"=>$ClassName);
+                            }
+                            else
+                            {
+                                %{$CompatProblems{".client_method"}{"Removed_Interface"}{"this"}} = (
+                                    "Type_Name"=>$ClassName,
+                                    "Target"=>$ClassName);
+                            }
+                        }
+                    }
+                }
             }
         }
-    }
-    foreach my $Package (split(/\s*\n\s*/, parseTag(\$Content, "skip_packages"))) {
-        $SkipPackages{$LibVersion}{$Package} = 1;
-    }
-    foreach my $Package (split(/\s*\n\s*/, parseTag(\$Content, "packages"))) {
-        $KeepPackages{$LibVersion}{$Package} = 1;
     }
 }
 
-sub parseTag($$)
+sub findFieldPair($$)
 {
-    my ($CodeRef, $Tag) = @_;
-    return "" if(not $CodeRef or not ${$CodeRef} or not $Tag);
-    if(${$CodeRef}=~s/\<\Q$Tag\E\>((.|\n)+?)\<\/\Q$Tag\E\>//)
+    my ($Field_Pos, $Pair_Type) = @_;
+    foreach my $Pair_Name (sort keys(%{$Pair_Type->{"Fields"}}))
     {
-        my $Content = $1;
-        $Content=~s/(\A\s+|\s+\Z)//g;
-        return $Content;
-    }
-    else {
-        return "";
+        if(defined $Pair_Type->{"Fields"}{$Pair_Name})
+        {
+            if($Pair_Type->{"Fields"}{$Pair_Name}{"Pos"} eq $Field_Pos) {
+                return $Pair_Name;
+            }
+        }
     }
+    return "lost";
 }
 
-sub ignore_path($$)
+my %Severity_Val=(
+    "High"=>3,
+    "Medium"=>2,
+    "Low"=>1,
+    "Safe"=>-1
+);
+
+sub isRecurType($$)
 {
-    my ($Path, $Prefix) = @_;
-    return 1 if(not $Path or not -e $Path
-    or not $Prefix or not -e $Prefix);
-    return 1 if($Path=~/\~\Z/);# skipping system backup files
-    # skipping hidden .svn, .git, .bzr, .hg and CVS directories
-    return 1 if(cut_path_prefix($Path, $Prefix)=~/(\A|[\/\\]+)(\.(svn|git|bzr|hg)|CVS)([\/\\]+|\Z)/);
+    foreach (@RecurTypes)
+    {
+        if($_->{"Tid1"} eq $_[0]
+        and $_->{"Tid2"} eq $_[1])
+        {
+            return 1;
+        }
+    }
     return 0;
 }
 
-sub cut_path_prefix($$)
+sub pushType($$)
 {
-    my ($Path, $Prefix) = @_;
-    $Prefix=~s/[\/\\]+\Z//;
-    $Path=~s/\A\Q$Prefix\E([\/\\]+|\Z)//;
-    return $Path;
+    my %TypeDescriptor = (
+        "Tid1"  => $_[0],
+        "Tid2"  => $_[1]);
+    push(@RecurTypes, \%TypeDescriptor);
 }
 
-sub get_filename($)
-{ # much faster than basename() from File::Basename module
-    if(defined $Cache{"get_filename"}{$_[0]}) {
-        return $Cache{"get_filename"}{$_[0]};
-    }
-    if($_[0] and $_[0]=~/([^\/\\]+)[\/\\]*\Z/) {
-        return ($Cache{"get_filename"}{$_[0]}=$1);
-    }
-    return ($Cache{"get_filename"}{$_[0]}="");
+sub getSFormat($)
+{
+    my $Name = $_[0];
+    $Name=~s/\./\//g;
+    return $Name;
 }
 
-sub get_dirname($)
-{ # much faster than dirname() from File::Basename module
-    if(defined $Cache{"get_dirname"}{$_[0]}) {
-        return $Cache{"get_dirname"}{$_[0]};
+sub getConstantValue($$)
+{
+    my ($Value, $ValueType) = @_;
+    
+    if(not defined $Value) {
+        return undef;
     }
-    if($_[0] and $_[0]=~/\A(.*?)[\/\\]+[^\/\\]*[\/\\]*\Z/) {
-        return ($Cache{"get_dirname"}{$_[0]}=$1);
+    
+    if($Value eq "\@EMPTY_STRING\@") {
+        return "\"\"";
     }
-    return ($Cache{"get_dirname"}{$_[0]}="");
-}
-
-sub separate_path($) {
-    return (get_dirname($_[0]), get_filename($_[0]));
+    elsif($ValueType eq "java.lang.String") {
+        return "\"".$Value."\"";
+    }
+    
+    return $Value;
 }
 
-sub joinPath($$)
+sub getInvoked($)
 {
-    return join($SLASH, @_);
-}
-
-sub get_abs_path($)
-{ # abs_path() should NOT be called for absolute inputs
-  # because it can change them
-    my $Path = $_[0];
-    if(not is_abs($Path)) {
-        $Path = abs_path($Path);
+    my $TName = $_[0];
+    
+    if(my @Invoked = sort keys(%{$ClassMethod_AddedUsed{$TName}}))
+    {
+        my $MFirst = $Invoked[0];
+        my $MSignature = unmangle($MFirst);
+        $MSignature=~s/\A.+\.(\w+\()/$1/g; # short name
+        my $InvokedBy = $ClassMethod_AddedUsed{$TName}{$MFirst};
+        return ($MSignature, $InvokedBy);
     }
-    return $Path;
-}
-
-sub is_abs($) {
-    return ($_[0]=~/\A(\/|\w+:[\/\\])/);
+    
+    return ();
 }
 
-sub cmd_find($$$$)
+sub mergeTypes($$)
 {
-    my ($Path, $Type, $Name, $MaxDepth) = @_;
-    return () if(not $Path or not -e $Path);
-    if($OSgroup eq "windows")
+    my ($Type1_Id, $Type2_Id) = @_;
+    return {} if(not $Type1_Id or not $Type2_Id);
+    
+    if(defined $Cache{"mergeTypes"}{$Type1_Id}{$Type2_Id})
+    { # already merged
+        return $Cache{"mergeTypes"}{$Type1_Id}{$Type2_Id};
+    }
+    
+    if(isRecurType($Type1_Id, $Type2_Id))
+    { # do not follow to recursive declarations
+        return {};
+    }
+    
+    my %Type1 = %{getType($Type1_Id, 1)};
+    my %Type2 = %{getType($Type2_Id, 2)};
+    
+    return {} if(not $Type1{"Name"} or not $Type2{"Name"});
+    return {} if(not $Type1{"Archive"} or not $Type2{"Archive"});
+    return {} if($Type1{"Name"} ne $Type2{"Name"});
+    
+    if(not classFilter(\%Type1, 1, 0)) {
+        return {};
+    }
+    
+    $CheckedTypes{$Type1{"Name"}} = 1;
+    
+    my %SubProblems = ();
+    
+    if($Type1{"BaseType"} and $Type2{"BaseType"})
+    { # check base type (arrays)
+        return mergeTypes($Type1{"BaseType"}, $Type2{"BaseType"});
+    }
+    
+    if($Type2{"Type"}!~/(class|interface)/) {
+        return {};
+    }
+    
+    if($Type1{"Type"} eq "class" and not $Class_Constructed{1}{$Type1_Id})
+    { # class cannot be constructed or inherited by clients
+        return {};
+    }
+    
+    if($Type1{"Type"} eq "class"
+    and $Type2{"Type"} eq "interface")
     {
-        my $DirCmd = get_CmdPath("dir");
-        if(not $DirCmd) {
-            exitStatus("Not_Found", "can't find \"dir\" command");
-        }
-        $Path=~s/[\\]+\Z//;
-        $Path = get_abs_path($Path);
-        my $Cmd = $DirCmd." \"$Path\" /B /O";
-        if($MaxDepth!=1) {
-            $Cmd .= " /S";
-        }
-        if($Type eq "d") {
-            $Cmd .= " /AD";
-        }
-        my @Files = ();
-        if($Name)
-        { # FIXME: how to search file names in MS shell?
-            $Name=~s/\*/.*/g if($Name!~/\]/);
-            foreach my $File (split(/\n/, `$Cmd`))
-            {
-                if($File=~/$Name\Z/i) {
-                    push(@Files, $File);    
-                }
-            }
-        }
-        else {
-            @Files = split(/\n/, `$Cmd 2>\"$TMP_DIR/null\"`);
-        }
-        my @AbsPaths = ();
-        foreach my $File (@Files)
-        {
-            if(not is_abs($File)) {
-                $File = joinPath($Path, $File);
-            }
-            if($Type eq "f" and not -f $File)
-            { # skip dirs
-                next;
-            }
-            push(@AbsPaths, $File);
-        }
-        if($Type eq "d") {
-            push(@AbsPaths, $Path);
-        }
-        return @AbsPaths;
+        %{$SubProblems{"Class_Became_Interface"}{""}}=(
+            "Type_Name"=>$Type1{"Name"});
+        
+        return ($Cache{"mergeTypes"}{$Type1_Id}{$Type2_Id} = \%SubProblems);
     }
-    else
+    if($Type1{"Type"} eq "interface"
+    and $Type2{"Type"} eq "class")
     {
-        my $FindCmd = get_CmdPath("find");
-        if(not $FindCmd) {
-            exitStatus("Not_Found", "can't find a \"find\" command");
-        }
-        $Path = get_abs_path($Path);
-        if(-d $Path and -l $Path
-        and $Path!~/\/\Z/)
-        { # for directories that are symlinks
-            $Path.="/";
-        }
-        my $Cmd = $FindCmd." \"$Path\"";
-        if($MaxDepth) {
-            $Cmd .= " -maxdepth $MaxDepth";
-        }
-        if($Type) {
-            $Cmd .= " -type $Type";
-        }
-        if($Name)
-        {
-            if($Name=~/\]/) {
-                $Cmd .= " -regex \"$Name\"";
-            }
-            else {
-                $Cmd .= " -name \"$Name\"";
-            }
-        }
-        return split(/\n/, `$Cmd 2>\"$TMP_DIR/null\"`);
+        %{$SubProblems{"Interface_Became_Class"}{""}}=(
+            "Type_Name"=>$Type1{"Name"});
+        
+        return ($Cache{"mergeTypes"}{$Type1_Id}{$Type2_Id} = \%SubProblems);
     }
-}
-
-sub path_format($$)
-{ # forward slash to pass into MinGW GCC
-    my ($Path, $Fmt) = @_;
-    if($Fmt eq "windows")
+    if(not $Type1{"Final"}
+    and $Type2{"Final"})
     {
-        $Path=~s/\//\\/g;
-        $Path=lc($Path);
+        %{$SubProblems{"Class_Became_Final"}{""}}=(
+            "Type_Name"=>$Type1{"Name"},
+            "Target"=>$Type1{"Name"});
     }
-    else {
-        $Path=~s/\\/\//g;
+    if(not $Type1{"Abstract"}
+    and $Type2{"Abstract"})
+    {
+        %{$SubProblems{"Class_Became_Abstract"}{""}}=(
+            "Type_Name"=>$Type1{"Name"});
     }
-    return $Path;
-}
-
-sub unpackDump($)
-{
-    my $Path = $_[0];
-    return "" if(not $Path or not -e $Path);
     
-    if(isDumpFile($Path)) {
-        return $Path;
-    }
+    pushType($Type1_Id, $Type2_Id);
     
-    $Path = get_abs_path($Path);
-    $Path = path_format($Path, $OSgroup);
-    my ($Dir, $FileName) = separate_path($Path);
-    my $UnpackDir = $TMP_DIR."/unpack";
-    if(-d $UnpackDir) {
-        rmtree($UnpackDir);
-    }
-    mkpath($UnpackDir);
-    if($FileName=~s/\Q.zip\E\Z//g)
-    { # *.zip
-        my $UnzipCmd = get_CmdPath("unzip");
-        if(not $UnzipCmd) {
-            exitStatus("Not_Found", "can't find \"unzip\" command");
-        }
-        chdir($UnpackDir);
-        system("$UnzipCmd \"$Path\" >contents.txt");
-        if($?) {
-            exitStatus("Error", "can't extract \'$Path\'");
-        }
-        chdir($ORIG_DIR);
-        my @Contents = ();
-        foreach (split("\n", readFile("$UnpackDir/contents.txt")))
+    foreach my $AddedMethod (keys(%{$AddedMethod_Abstract{$Type1{"Name"}}}))
+    {
+        if($Type1{"Type"} eq "class")
         {
-            if(/inflating:\s*([^\s]+)/) {
-                push(@Contents, $1);
-            }
-        }
-        if(not @Contents) {
-            exitStatus("Error", "can't extract \'$Path\'");
-        }
-        return joinPath($UnpackDir, $Contents[0]);
-    }
-    elsif($FileName=~s/\Q.tar.gz\E\Z//g)
-    { # *.tar.gz
-        if($OSgroup eq "windows")
-        { # -xvzf option is not implemented in tar.exe (2003)
-          # use "gzip.exe -k -d -f" + "tar.exe -xvf" instead
-            my $TarCmd = get_CmdPath("tar");
-            if(not $TarCmd) {
-                exitStatus("Not_Found", "can't find \"tar\" command");
-            }
-            my $GzipCmd = get_CmdPath("gzip");
-            if(not $GzipCmd) {
-                exitStatus("Not_Found", "can't find \"gzip\" command");
-            }
-            chdir($UnpackDir);
-            qx/$GzipCmd -k -d -f "$Path"/; # keep input files (-k)
-            if($?) {
-                exitStatus("Error", "can't extract \'$Path\'");
+            if($Type1{"Abstract"})
+            {
+                if(my @InvokedBy = sort keys(%{$MethodUsed{2}{$AddedMethod}}))
+                {
+                    %{$SubProblems{"Abstract_Class_Added_Abstract_Method_Invoked_By_Others"}{getSFormat($AddedMethod)}} = (
+                        "Type_Name"=>$Type1{"Name"},
+                        "Type_Type"=>$Type1{"Type"},
+                        "Target"=>$AddedMethod,
+                        "Invoked_By"=>$InvokedBy[0]);
+                }
+                else
+                {
+                    %{$SubProblems{"Abstract_Class_Added_Abstract_Method"}{getSFormat($AddedMethod)}} = (
+                        "Type_Name"=>$Type1{"Name"},
+                        "Type_Type"=>$Type1{"Type"},
+                        "Target"=>$AddedMethod);
+                }
             }
-            my @Contents = qx/$TarCmd -xvf "$Dir\\$FileName.tar"/;
-            if($? or not @Contents) {
-                exitStatus("Error", "can't extract \'$Path\'");
+            else
+            {
+                %{$SubProblems{"NonAbstract_Class_Added_Abstract_Method"}{getSFormat($AddedMethod)}} = (
+                    "Type_Name"=>$Type1{"Name"},
+                    "Type_Type"=>$Type1{"Type"},
+                    "Target"=>$AddedMethod);
             }
-            chdir($ORIG_DIR);
-            unlink($Dir."/".$FileName.".tar");
-            chomp $Contents[0];
-            return joinPath($UnpackDir, $Contents[0]);
         }
         else
-        { # Linux, Unix, OS X
-            my $TarCmd = get_CmdPath("tar");
-            if(not $TarCmd) {
-                exitStatus("Not_Found", "can't find \"tar\" command");
+        {
+            if(my @InvokedBy = sort keys(%{$MethodUsed{2}{$AddedMethod}}))
+            {
+                %{$SubProblems{"Interface_Added_Abstract_Method_Invoked_By_Others"}{getSFormat($AddedMethod)}} = (
+                    "Type_Name"=>$Type1{"Name"},
+                    "Type_Type"=>$Type1{"Type"},
+                    "Target"=>$AddedMethod,
+                    "Invoked_By"=>$InvokedBy[0]);
             }
-            chdir($UnpackDir);
-            my @Contents = qx/$TarCmd -xvzf "$Path" 2>&1/;
-            if($? or not @Contents) {
-                exitStatus("Error", "can't extract \'$Path\'");
+            else
+            {
+                %{$SubProblems{"Interface_Added_Abstract_Method"}{getSFormat($AddedMethod)}} = (
+                    "Type_Name"=>$Type1{"Name"},
+                    "Type_Type"=>$Type1{"Type"},
+                    "Target"=>$AddedMethod);
             }
-            chdir($ORIG_DIR);
-            $Contents[0]=~s/^x //; # OS X
-            chomp $Contents[0];
-            return joinPath($UnpackDir, $Contents[0]);
         }
     }
-}
-
-sub mergeClasses()
-{
-    my %ReportedRemoved = undef;
-    
-    foreach my $ClassName (keys(%{$Class_Methods{1}}))
+    foreach my $RemovedMethod (keys(%{$RemovedMethod_Abstract{$Type1{"Name"}}}))
     {
-        next if(not $ClassName);
-        my $Type1_Id = $TName_Tid{1}{$ClassName};
-        my %Type1 = get_Type($Type1_Id, 1);
-        
-        if($Type1{"Type"}!~/class|interface/) {
-            next;
+        if($Type1{"Type"} eq "class")
+        {
+            %{$SubProblems{"Class_Removed_Abstract_Method"}{getSFormat($RemovedMethod)}} = (
+                "Type_Name"=>$Type1{"Name"},
+                "Type_Type"=>$Type1{"Type"},
+                "Target"=>$RemovedMethod);
         }
-        
-        if(defined $Type1{"Access"}
-        and $Type1{"Access"}=~/private/) {
-            next;
+        else
+        {
+            %{$SubProblems{"Interface_Removed_Abstract_Method"}{getSFormat($RemovedMethod)}} = (
+                "Type_Name"=>$Type1{"Name"},
+                "Type_Type"=>$Type1{"Type"},
+                "Target"=>$RemovedMethod);
         }
+    }
+    if($Type1{"Type"} eq "class"
+    and $Type2{"Type"} eq "class")
+    {
+        my $SuperClass1 = getType($Type1{"SuperClass"}, 1);
+        my $SuperClass2 = getType($Type2{"SuperClass"}, 2);
         
-        if(not classFilter(\%Type1, 1, 0)) {
-            next;
-        }
+        my $SuperClassName1 = $SuperClass1->{"Name"};
+        my $SuperClassName2 = $SuperClass2->{"Name"};
         
-        my $Type2_Id = $TName_Tid{2}{$ClassName};
-        if(not $Type2_Id)
-        { # classes and interfaces with public methods
-            foreach my $Method (keys(%{$Class_Methods{1}{$ClassName}}))
+        if($SuperClassName2 ne $SuperClassName1)
+        {
+            if($SuperClassName1 eq "java.lang.Object"
+            or not $SuperClassName1)
             {
-                if(not methodFilter($Method, 1)) {
-                    next;
-                }
-                
-                $CheckedTypes{$ClassName} = 1;
-                $CheckedMethods{$Method} = 1;
-                
-                if($Type1{"Type"} eq "class")
-                {
-                    %{$CompatProblems{$Method}{"Removed_Class"}{"this"}} = (
-                        "Type_Name"=>$ClassName,
-                        "Target"=>$ClassName  );
-                }
-                else
+              # Java 6: java.lang.Object
+              # Java 7: none
+                if($SuperClassName2 ne "java.lang.Object")
                 {
-                    %{$CompatProblems{$Method}{"Removed_Interface"}{"this"}} = (
-                        "Type_Name"=>$ClassName,
-                        "Target"=>$ClassName  );
+                    if($SuperClass2->{"Abstract"}
+                    and $Type1{"Abstract"} and $Type2{"Abstract"}
+                    and keys(%{$Class_AbstractMethods{2}{$SuperClassName2}}))
+                    {
+                        if(my ($Invoked, $InvokedBy) = getInvoked($Type1{"Name"}))
+                        {
+                            %{$SubProblems{"Abstract_Class_Added_Super_Abstract_Class_Invoked_By_Others"}{""}} = (
+                                "Type_Name"=>$Type1{"Name"},
+                                "Target"=>$SuperClassName2,
+                                "Invoked"=>$Invoked,
+                                "Invoked_By"=>$InvokedBy);
+                        }
+                        else
+                        {
+                            %{$SubProblems{"Abstract_Class_Added_Super_Abstract_Class"}{""}} = (
+                                "Type_Name"=>$Type1{"Name"},
+                                "Target"=>$SuperClassName2);
+                        }
+                    }
+                    else
+                    {
+                        %{$SubProblems{"Added_Super_Class"}{""}} = (
+                            "Type_Name"=>$Type1{"Name"},
+                            "Target"=>$SuperClassName2);
+                    }
                 }
-                
-                $ReportedRemoved{$ClassName} = 1;
+            }
+            elsif($SuperClassName2 eq "java.lang.Object"
+            or not $SuperClassName2)
+            {
+              # Java 6: java.lang.Object
+              # Java 7: none
+                if($SuperClassName1 ne "java.lang.Object")
+                {
+                    %{$SubProblems{"Removed_Super_Class"}{""}} = (
+                        "Type_Name"=>$Type1{"Name"},
+                        "Target"=>$SuperClassName1);
+                }
+            }
+            else
+            {
+                %{$SubProblems{"Changed_Super_Class"}{""}} = (
+                    "Type_Name"=>$Type1{"Name"},
+                    "Target"=>$SuperClassName1,
+                    "Old_Value"=>$SuperClassName1,
+                    "New_Value"=>$SuperClassName2);
             }
         }
     }
-    
-    foreach my $Class_Id (keys(%{$TypeInfo{1}}))
+    my %SuperInterfaces_Old = map {getTypeName($_, 1) => 1} keys(%{$Type1{"SuperInterface"}});
+    my %SuperInterfaces_New = map {getTypeName($_, 2) => 1} keys(%{$Type2{"SuperInterface"}});
+    foreach my $SuperInterface (keys(%SuperInterfaces_New))
     {
-        my %Class1 = get_Type($Class_Id, 1);
-        
-        if($Class1{"Type"}!~/class|interface/) {
-            next;
-        }
-        
-        if(defined $Class1{"Access"}
-        and $Class1{"Access"}=~/private/) {
-            next;
-        }
-        
-        if(not classFilter(\%Class1, 1, 1)) {
-            next;
-        }
-        
-        my $ClassName = $Class1{"Name"};
-        
-        if(my $Class2_Id = $TName_Tid{2}{$ClassName})
-        { # classes and interfaces with public static fields
-            if(not defined $Class_Methods{1}{$ClassName})
+        if(not $SuperInterfaces_Old{$SuperInterface})
+        {
+            my $HaveMethods = keys(%{$Class_AbstractMethods{2}{$SuperInterface}});
+            my $HaveFields = keys(%{$Class_Fields{2}{$SuperInterface}});
+            
+            if($Type1{"Type"} eq "interface")
             {
-                my %Class2 = get_Type($Class2_Id, 2);
-                
-                foreach my $Field (keys(%{$Class1{"Fields"}}))
+                if($HaveMethods
+                or $SuperInterface=~/\Ajava\./)
                 {
-                    my $FieldInfo = $Class1{"Fields"}{$Field};
-                    
-                    my $FAccess = $FieldInfo->{"Access"};
-                    if($FAccess=~/private/) {
-                        next;
+                    if($HaveMethods and checkDefaultImpl(2, $SuperInterface, $Type2{"Name"}))
+                    {
+                        %{$SubProblems{"Interface_Added_Super_Interface_With_Implemented_Methods"}{getSFormat($SuperInterface)}} = (
+                            "Type_Name"=>$Type1{"Name"},
+                            "Target"=>$SuperInterface);
                     }
-                    
-                    if($FieldInfo->{"Static"})
+                    else
                     {
-                        $CheckedTypes{$ClassName} = 1;
-                        
-                        if(not defined $Class2{"Fields"}{$Field})
+                        if(my ($Invoked, $InvokedBy) = getInvoked($Type1{"Name"}))
                         {
-                            %{$CompatProblems{".client_method"}{"Removed_NonConstant_Field"}{$Field}}=(
-                                "Target"=>$Field,
-                                "Type_Name"=>$ClassName,
-                                "Type_Type"=>$Class1{"Type"},
-                                "Field_Type"=>get_TypeName($FieldInfo->{"Type"}, 1)  );
+                            %{$SubProblems{"Interface_Added_Super_Interface_Used_By_Others"}{getSFormat($SuperInterface)}} = (
+                                "Type_Name"=>$Type1{"Name"},
+                                "Target"=>$SuperInterface,
+                                "Invoked"=>$Invoked,
+                                "Invoked_By"=>$InvokedBy);
+                        }
+                        else
+                        {
+                            %{$SubProblems{"Interface_Added_Super_Interface"}{getSFormat($SuperInterface)}} = (
+                                "Type_Name"=>$Type1{"Name"},
+                                "Target"=>$SuperInterface);
                         }
                     }
                 }
+                elsif($HaveFields)
+                {
+                    %{$SubProblems{"Interface_Added_Super_Constant_Interface"}{getSFormat($SuperInterface)}} = (
+                        "Type_Name"=>$Type2{"Name"},
+                        "Target"=>$SuperInterface);
+                }
+                else
+                {
+                    # empty interface
+                }
             }
-        }
-        else
-        { # removed
-            if(defined $Class1{"Annotation"})
-            {
-                %{$CompatProblems{".client_method"}{"Removed_Annotation"}{"this"}} = (
-                    "Type_Name"=>$ClassName,
-                    "Target"=>$ClassName  );
-            }
-            
-            if(not defined $Class_Methods{1}{$ClassName})
+            else
             {
-                # classes and interfaces with public static fields
-                if(not defined $ReportedRemoved{$ClassName})
+                if($Type1{"Abstract"} and $Type2{"Abstract"})
                 {
-                    foreach my $Field (keys(%{$Class1{"Fields"}}))
+                    if($HaveMethods and checkDefaultImpl(2, $SuperInterface, $Type2{"Name"}))
                     {
-                        my $FieldInfo = $Class1{"Fields"}{$Field};
-                        
-                        my $FAccess = $FieldInfo->{"Access"};
-                        if($FAccess=~/private/) {
-                            next;
+                        %{$SubProblems{"Abstract_Class_Added_Super_Interface_With_Implemented_Methods"}{getSFormat($SuperInterface)}} = (
+                            "Type_Name"=>$Type1{"Name"},
+                            "Target"=>$SuperInterface);
+                    }
+                    else
+                    {
+                        if(my ($Invoked, $InvokedBy) = getInvoked($Type1{"Name"}))
+                        {
+                            %{$SubProblems{"Abstract_Class_Added_Super_Interface_Invoked_By_Others"}{getSFormat($SuperInterface)}} = (
+                                "Type_Name"=>$Type1{"Name"},
+                                "Target"=>$SuperInterface,
+                                "Invoked"=>$Invoked,
+                                "Invoked_By"=>$InvokedBy);
                         }
-                        
-                        if($FieldInfo->{"Static"})
+                        else
                         {
-                            $CheckedTypes{$ClassName} = 1;
-                            
-                            if($Class1{"Type"} eq "class")
-                            {
-                                %{$CompatProblems{".client_method"}{"Removed_Class"}{"this"}} = (
-                                    "Type_Name"=>$ClassName,
-                                    "Target"=>$ClassName  );
-                            }
-                            else
-                            {
-                                %{$CompatProblems{".client_method"}{"Removed_Interface"}{"this"}} = (
-                                    "Type_Name"=>$ClassName,
-                                    "Target"=>$ClassName  );
-                            }
+                            %{$SubProblems{"Abstract_Class_Added_Super_Interface"}{getSFormat($SuperInterface)}} = (
+                                "Type_Name"=>$Type1{"Name"},
+                                "Target"=>$SuperInterface);
                         }
                     }
                 }
             }
         }
     }
-}
-
-sub findFieldPair($$)
-{
-    my ($Field_Pos, $Pair_Type) = @_;
-    foreach my $Pair_Name (sort keys(%{$Pair_Type->{"Fields"}}))
+    foreach my $SuperInterface (keys(%SuperInterfaces_Old))
     {
-        if(defined $Pair_Type->{"Fields"}{$Pair_Name})
+        if(not $SuperInterfaces_New{$SuperInterface})
         {
-            if($Pair_Type->{"Fields"}{$Pair_Name}{"Pos"} eq $Field_Pos) {
-                return $Pair_Name;
+            my $HaveMethods = keys(%{$Class_AbstractMethods{1}{$SuperInterface}});
+            my $HaveFields = keys(%{$Class_Fields{1}{$SuperInterface}});
+            
+            if($Type1{"Type"} eq "interface")
+            {
+                if($HaveMethods
+                or $SuperInterface=~/\Ajava\./)
+                {
+                    %{$SubProblems{"Interface_Removed_Super_Interface"}{getSFormat($SuperInterface)}} = (
+                        "Type_Name"=>$Type1{"Name"},
+                        "Type_Type"=>"interface",
+                        "Target"=>$SuperInterface);
+                }
+                elsif($HaveFields)
+                {
+                    %{$SubProblems{"Interface_Removed_Super_Constant_Interface"}{getSFormat($SuperInterface)}} = (
+                        "Type_Name"=>$Type1{"Name"},
+                        "Target"=>$SuperInterface);
+                }
+                else {
+                    # empty interface
+                }
+            }
+            else
+            {
+                %{$SubProblems{"Class_Removed_Super_Interface"}{getSFormat($SuperInterface)}} = (
+                    "Type_Name"=>$Type1{"Name"},
+                    "Type_Type"=>"class",
+                    "Target"=>$SuperInterface);
             }
         }
     }
-    return "lost";
-}
-
-my %Severity_Val=(
-    "High"=>3,
-    "Medium"=>2,
-    "Low"=>1,
-    "Safe"=>-1
-);
-
-sub isRecurType($$)
-{
-    foreach (@RecurTypes)
-    {
-        if($_->{"Tid1"} eq $_[0]
-        and $_->{"Tid2"} eq $_[1])
+    
+    foreach my $Field_Name (sort keys(%{$Type1{"Fields"}}))
+    {# check older fields
+        my $Access1 = $Type1{"Fields"}{$Field_Name}{"Access"};
+        if($Access1=~/private/) {
+            next;
+        }
+        
+        my $Field_Pos1 = $Type1{"Fields"}{$Field_Name}{"Pos"};
+        my $FieldType1_Id = $Type1{"Fields"}{$Field_Name}{"Type"};
+        my $FieldType1_Name = getTypeName($FieldType1_Id, 1);
+        
+        if(not $Type2{"Fields"}{$Field_Name})
+        {# removed fields
+            my $StraightPair_Name = findFieldPair($Field_Pos1, \%Type2);
+            if($StraightPair_Name ne "lost" and not $Type1{"Fields"}{$StraightPair_Name}
+            and $FieldType1_Name eq getTypeName($Type2{"Fields"}{$StraightPair_Name}{"Type"}, 2))
+            {
+                if(my $Constant = getConstantValue($Type1{"Fields"}{$Field_Name}{"Value"}, $FieldType1_Name))
+                {
+                    %{$SubProblems{"Renamed_Constant_Field"}{$Field_Name}}=(
+                        "Target"=>$Field_Name,
+                        "Type_Name"=>$Type1{"Name"},
+                        "Old_Value"=>$Field_Name,
+                        "New_Value"=>$StraightPair_Name,
+                        "Field_Type"=>$FieldType1_Name,
+                        "Field_Value"=>$Constant);
+                }
+                else
+                {
+                    %{$SubProblems{"Renamed_Field"}{$Field_Name}}=(
+                        "Target"=>$Field_Name,
+                        "Type_Name"=>$Type1{"Name"},
+                        "Old_Value"=>$Field_Name,
+                        "New_Value"=>$StraightPair_Name,
+                        "Field_Type"=>$FieldType1_Name);
+                }
+            }
+            else
+            {
+                if(my $Constant = getConstantValue($Type1{"Fields"}{$Field_Name}{"Value"}, $FieldType1_Name))
+                { # has a compile-time constant value
+                    %{$SubProblems{"Removed_Constant_Field"}{$Field_Name}}=(
+                        "Target"=>$Field_Name,
+                        "Type_Name"=>$Type1{"Name"},
+                        "Field_Value"=>$Constant,
+                        "Field_Type"=>$FieldType1_Name,
+                        "Type_Type"=>$Type1{"Type"});
+                }
+                else
+                {
+                    %{$SubProblems{"Removed_NonConstant_Field"}{$Field_Name}}=(
+                        "Target"=>$Field_Name,
+                        "Type_Name"=>$Type1{"Name"},
+                        "Type_Type"=>$Type1{"Type"},
+                        "Field_Type"=>$FieldType1_Name);
+                }
+            }
+            next;
+        }
+        
+        my $FieldType2_Id = $Type2{"Fields"}{$Field_Name}{"Type"};
+        my $FieldType2_Name = getTypeName($FieldType2_Id, 2);
+        
+        if(not $Type1{"Fields"}{$Field_Name}{"Static"}
+        and $Type2{"Fields"}{$Field_Name}{"Static"})
         {
-            return 1;
+            if(not $Type1{"Fields"}{$Field_Name}{"Value"})
+            {
+                %{$SubProblems{"NonConstant_Field_Became_Static"}{$Field_Name}}=(
+                    "Target"=>$Field_Name,
+                    "Field_Type"=>$FieldType1_Name,
+                    "Type_Name"=>$Type1{"Name"});
+            }
         }
-    }
-    return 0;
-}
-
-sub pushType($$)
-{
-    my %TypeDescriptor=(
-        "Tid1"  => $_[0],
-        "Tid2"  => $_[1]  );
-    push(@RecurTypes, \%TypeDescriptor);
-}
-
-sub get_SFormat($)
-{
-    my $Name = $_[0];
-    $Name=~s/\./\//g;
-    return $Name;
-}
-
-sub get_PFormat($)
-{
-    my $Name = $_[0];
-    $Name=~s/\//./g;
-    return $Name;
-}
-
-sub get_ConstantValue($$)
-{
-    my ($Value, $ValueType) = @_;
-    return "" if(not $Value);
-    if($Value eq "\@EMPTY_STRING\@") {
-        return "\"\"";
-    }
-    elsif($ValueType eq "java.lang.String") {
-        return "\"".$Value."\"";
-    }
-    else {
-        return $Value;
-    }
-}
-
-sub getInvoked($)
-{
-    my $TName = $_[0];
-    
-    if(my @Invoked = sort keys(%{$ClassMethod_AddedUsed{$TName}}))
-    {
-        my $MFirst = $Invoked[0];
-        my $MSignature = unmangle($MFirst);
-        $MSignature=~s/\A.+\.(\w+\()/$1/g; # short name
-        my $InvokedBy = $ClassMethod_AddedUsed{$TName}{$MFirst};
-        return ($MSignature, $InvokedBy);
-    }
-    
-    return ();
-}
-
-sub mergeTypes($$)
-{
-    my ($Type1_Id, $Type2_Id) = @_;
-    return {} if(not $Type1_Id or not $Type2_Id);
-    
-    if(defined $Cache{"mergeTypes"}{$Type1_Id}{$Type2_Id})
-    { # already merged
-        return $Cache{"mergeTypes"}{$Type1_Id}{$Type2_Id};
-    }
-    
-    my %Type1 = get_Type($Type1_Id, 1);
-    my %Type2 = get_Type($Type2_Id, 2);
-    if(isRecurType($Type1_Id, $Type2_Id))
-    { # do not follow to recursive declarations
-        return {};
-    }
-    return {} if(not $Type1{"Name"} or not $Type2{"Name"});
-    return {} if(not $Type1{"Archive"} or not $Type2{"Archive"});
-    return {} if($Type1{"Name"} ne $Type2{"Name"});
-    
-    if(not classFilter(\%Type1, 1, 0)) {
-        return {};
-    }
-    
-    $CheckedTypes{$Type1{"Name"}} = 1;
-    
-    my %SubProblems = ();
-    
-    if($Type1{"BaseType"} and $Type2{"BaseType"})
-    { # check base type (arrays)
-        return mergeTypes($Type1{"BaseType"}, $Type2{"BaseType"});
-    }
-    
-    if($Type2{"Type"}!~/(class|interface)/) {
-        return {};
-    }
-    
-    if($Type1{"Type"} eq "class" and not $Class_Constructed{1}{$Type1_Id})
-    { # class cannot be constructed or inherited by clients
-        return {};
-    }
-    
-    if($Type1{"Type"} eq "class"
-    and $Type2{"Type"} eq "interface")
-    {
-        %{$SubProblems{"Class_Became_Interface"}{""}}=(
-            "Type_Name"=>$Type1{"Name"}  );
-        
-        return ($Cache{"mergeTypes"}{$Type1_Id}{$Type2_Id} = \%SubProblems);
-    }
-    if($Type1{"Type"} eq "interface"
-    and $Type2{"Type"} eq "class")
-    {
-        %{$SubProblems{"Interface_Became_Class"}{""}}=(
-            "Type_Name"=>$Type1{"Name"}  );
-        
-        return ($Cache{"mergeTypes"}{$Type1_Id}{$Type2_Id} = \%SubProblems);
-    }
-    if(not $Type1{"Final"}
-    and $Type2{"Final"})
-    {
-        %{$SubProblems{"Class_Became_Final"}{""}}=(
-            "Type_Name"=>$Type1{"Name"},
-            "Target"=>$Type1{"Name"}  );
-    }
-    if(not $Type1{"Abstract"}
-    and $Type2{"Abstract"})
-    {
-        %{$SubProblems{"Class_Became_Abstract"}{""}}=(
-            "Type_Name"=>$Type1{"Name"}  );
-    }
-    
-    pushType($Type1_Id, $Type2_Id);
-    
-    foreach my $AddedMethod (keys(%{$AddedMethod_Abstract{$Type1{"Name"}}}))
-    {
-        if($Type1{"Type"} eq "class")
+        elsif($Type1{"Fields"}{$Field_Name}{"Static"}
+        and not $Type2{"Fields"}{$Field_Name}{"Static"})
         {
-            if($Type1{"Abstract"})
+            if($Type1{"Fields"}{$Field_Name}{"Value"})
             {
-                if(my @InvokedBy = sort keys(%{$MethodUsed{2}{$AddedMethod}}))
-                {
-                    %{$SubProblems{"Abstract_Class_Added_Abstract_Method_Invoked_By_Others"}{get_SFormat($AddedMethod)}} = (
-                        "Type_Name"=>$Type1{"Name"},
-                        "Type_Type"=>$Type1{"Type"},
-                        "Target"=>$AddedMethod,
-                        "InvokedBy"=>$InvokedBy[0]  );
-                }
-                else
-                {
-                    %{$SubProblems{"Abstract_Class_Added_Abstract_Method"}{get_SFormat($AddedMethod)}} = (
-                        "Type_Name"=>$Type1{"Name"},
-                        "Type_Type"=>$Type1{"Type"},
-                        "Target"=>$AddedMethod  );
-                }
+                %{$SubProblems{"Constant_Field_Became_NonStatic"}{$Field_Name}}=(
+                    "Target"=>$Field_Name,
+                    "Field_Type"=>$FieldType1_Name,
+                    "Type_Name"=>$Type1{"Name"});
             }
             else
             {
-                %{$SubProblems{"NonAbstract_Class_Added_Abstract_Method"}{get_SFormat($AddedMethod)}} = (
-                    "Type_Name"=>$Type1{"Name"},
-                    "Type_Type"=>$Type1{"Type"},
-                    "Target"=>$AddedMethod  );
+                %{$SubProblems{"NonConstant_Field_Became_NonStatic"}{$Field_Name}}=(
+                    "Target"=>$Field_Name,
+                    "Field_Type"=>$FieldType1_Name,
+                    "Type_Name"=>$Type1{"Name"});
             }
         }
-        else
+        if(not $Type1{"Fields"}{$Field_Name}{"Final"}
+        and $Type2{"Fields"}{$Field_Name}{"Final"})
         {
-            if(my @InvokedBy = sort keys(%{$MethodUsed{2}{$AddedMethod}}))
+            %{$SubProblems{"Field_Became_Final"}{$Field_Name}}=(
+                "Target"=>$Field_Name,
+                "Field_Type"=>$FieldType1_Name,
+                "Type_Name"=>$Type1{"Name"});
+        }
+        elsif($Type1{"Fields"}{$Field_Name}{"Final"}
+        and not $Type2{"Fields"}{$Field_Name}{"Final"})
+        {
+            %{$SubProblems{"Field_Became_NonFinal"}{$Field_Name}}=(
+                "Target"=>$Field_Name,
+                "Field_Type"=>$FieldType1_Name,
+                "Type_Name"=>$Type1{"Name"});
+        }
+        my $Access2 = $Type2{"Fields"}{$Field_Name}{"Access"};
+        if($Access1 eq "public" and $Access2=~/protected|private/
+        or $Access1 eq "protected" and $Access2=~/private/)
+        {
+            if($Access2 eq "package-private")
             {
-                %{$SubProblems{"Interface_Added_Abstract_Method_Invoked_By_Others"}{get_SFormat($AddedMethod)}} = (
+                %{$SubProblems{"Changed_Field_Access_To_Package_Private"}{$Field_Name}}=(
+                    "Target"=>$Field_Name,
                     "Type_Name"=>$Type1{"Name"},
-                    "Type_Type"=>$Type1{"Type"},
-                    "Target"=>$AddedMethod,
-                    "InvokedBy"=>$InvokedBy[0]  );
+                    "Old_Value"=>$Access1,
+                    "New_Value"=>$Access2);
             }
             else
             {
-                %{$SubProblems{"Interface_Added_Abstract_Method"}{get_SFormat($AddedMethod)}} = (
+                %{$SubProblems{"Changed_Field_Access"}{$Field_Name}}=(
+                    "Target"=>$Field_Name,
                     "Type_Name"=>$Type1{"Name"},
-                    "Type_Type"=>$Type1{"Type"},
-                    "Target"=>$AddedMethod  );
+                    "Old_Value"=>$Access1,
+                    "New_Value"=>$Access2);
             }
         }
-    }
-    foreach my $RemovedMethod (keys(%{$RemovedMethod_Abstract{$Type1{"Name"}}}))
-    {
-        if($Type1{"Type"} eq "class")
-        {
-            %{$SubProblems{"Class_Removed_Abstract_Method"}{get_SFormat($RemovedMethod)}} = (
-                "Type_Name"=>$Type1{"Name"},
-                "Type_Type"=>$Type1{"Type"},
-                "Target"=>$RemovedMethod  );
-        }
-        else
-        {
-            %{$SubProblems{"Interface_Removed_Abstract_Method"}{get_SFormat($RemovedMethod)}} = (
-                "Type_Name"=>$Type1{"Name"},
-                "Type_Type"=>$Type1{"Type"},
-                "Target"=>$RemovedMethod  );
-        }
-    }
-    if($Type1{"Type"} eq "class"
-    and $Type2{"Type"} eq "class")
-    {
-        my %SuperClass1 = get_Type($Type1{"SuperClass"}, 1);
-        my %SuperClass2 = get_Type($Type2{"SuperClass"}, 2);
-        if($SuperClass2{"Name"} ne $SuperClass1{"Name"})
+        
+        my $Value1 = getConstantValue($Type1{"Fields"}{$Field_Name}{"Value"}, $FieldType1_Name);
+        my $Value2 = getConstantValue($Type2{"Fields"}{$Field_Name}{"Value"}, $FieldType2_Name);
+        
+        if($Value1 ne $Value2)
         {
-            if($SuperClass1{"Name"} eq "java.lang.Object"
-            or not $SuperClass1{"Name"})
+            if($Value1 and $Value2)
             {
-              # Java 6: java.lang.Object
-              # Java 7: none
-                if($SuperClass2{"Name"} ne "java.lang.Object")
+                if($Type1{"Fields"}{$Field_Name}{"Final"}
+                and $Type2{"Fields"}{$Field_Name}{"Final"})
                 {
-                    if($SuperClass2{"Abstract"}
-                    and $Type1{"Abstract"} and $Type2{"Abstract"}
-                    and keys(%{$Class_AbstractMethods{2}{$SuperClass2{"Name"}}}))
+                    if($Field_Name=~/(\A|_)(VERSION|VERNUM|BUILDNUMBER|BUILD)(_|\Z)/i)
                     {
-                        if(my ($Invoked, $InvokedBy) = getInvoked($Type1{"Name"}))
-                        {
-                            %{$SubProblems{"Abstract_Class_Added_Super_Abstract_Class_Invoked_By_Others"}{""}} = (
-                                "Type_Name"=>$Type1{"Name"},
-                                "Target"=>$SuperClass2{"Name"},
-                                "Invoked"=>$Invoked,
-                                "InvokedBy"=>$InvokedBy  );
-                        }
-                        else
-                        {
-                            %{$SubProblems{"Abstract_Class_Added_Super_Abstract_Class"}{""}} = (
-                                "Type_Name"=>$Type1{"Name"},
-                                "Target"=>$SuperClass2{"Name"}  );
-                        }
+                        %{$SubProblems{"Changed_Final_Version_Field_Value"}{$Field_Name}}=(
+                            "Target"=>$Field_Name,
+                            "Field_Type"=>$FieldType1_Name,
+                            "Type_Name"=>$Type1{"Name"},
+                            "Old_Value"=>$Value1,
+                            "New_Value"=>$Value2);
                     }
                     else
                     {
-                        %{$SubProblems{"Added_Super_Class"}{""}} = (
+                        %{$SubProblems{"Changed_Final_Field_Value"}{$Field_Name}}=(
+                            "Target"=>$Field_Name,
+                            "Field_Type"=>$FieldType1_Name,
                             "Type_Name"=>$Type1{"Name"},
-                            "Target"=>$SuperClass2{"Name"}  );
+                            "Old_Value"=>$Value1,
+                            "New_Value"=>$Value2);
                     }
                 }
             }
-            elsif($SuperClass2{"Name"} eq "java.lang.Object"
-            or not $SuperClass2{"Name"})
-            {
-              # Java 6: java.lang.Object
-              # Java 7: none
-                if($SuperClass1{"Name"} ne "java.lang.Object")
-                {
-                    %{$SubProblems{"Removed_Super_Class"}{""}} = (
-                        "Type_Name"=>$Type1{"Name"},
-                        "Target"=>$SuperClass1{"Name"}  );
-                }
-            }
-            else
+        }
+        
+        my %Sub_SubChanges = detectTypeChange($FieldType1_Id, $FieldType2_Id, "Field");
+        foreach my $Sub_SubProblemType (keys(%Sub_SubChanges))
+        {
+            %{$SubProblems{$Sub_SubProblemType}{$Field_Name}}=(
+                "Target"=>$Field_Name,
+                "Type_Name"=>$Type1{"Name"});
+            
+            foreach my $Attr (keys(%{$Sub_SubChanges{$Sub_SubProblemType}}))
             {
-                %{$SubProblems{"Changed_Super_Class"}{""}} = (
-                    "Type_Name"=>$Type1{"Name"},
-                    "Target"=>$SuperClass1{"Name"},
-                    "Old_Value"=>$SuperClass1{"Name"},
-                    "New_Value"=>$SuperClass2{"Name"}  );
+                $SubProblems{$Sub_SubProblemType}{$Field_Name}{$Attr} = $Sub_SubChanges{$Sub_SubProblemType}{$Attr};
             }
         }
-    }
-    my %SuperInterfaces_Old = map {get_TypeName($_, 1) => 1} keys(%{$Type1{"SuperInterface"}});
-    my %SuperInterfaces_New = map {get_TypeName($_, 2) => 1} keys(%{$Type2{"SuperInterface"}});
-    foreach my $SuperInterface (keys(%SuperInterfaces_New))
-    {
-        if(not $SuperInterfaces_Old{$SuperInterface})
-        {
-            my $HaveMethods = keys(%{$Class_AbstractMethods{2}{$SuperInterface}});
-            my $HaveFields = keys(%{$Class_Fields{2}{$SuperInterface}});
+        
+        if($FieldType1_Id and $FieldType2_Id)
+        { # check field type change
+            my $Sub_SubProblems = mergeTypes($FieldType1_Id, $FieldType2_Id);
+            my %DupProblems = ();
             
-            if($Type1{"Type"} eq "interface")
+            foreach my $Sub_SubProblemType (sort keys(%{$Sub_SubProblems}))
             {
-                if($HaveMethods
-                or $SuperInterface=~/\Ajava\./)
+                foreach my $Sub_SubLocation (sort {length($a)<=>length($b)} sort keys(%{$Sub_SubProblems->{$Sub_SubProblemType}}))
                 {
-                    if($HaveMethods and checkDefaultImpl(2, $SuperInterface, $Type2{"Name"}))
-                    {
-                        %{$SubProblems{"Interface_Added_Super_Interface_With_Implemented_Methods"}{get_SFormat($SuperInterface)}} = (
-                            "Type_Name"=>$Type1{"Name"},
-                            "Target"=>$SuperInterface  );
-                    }
-                    else
+                    if(not defined $In::Opt{"AllAffected"})
                     {
-                        if(my ($Invoked, $InvokedBy) = getInvoked($Type1{"Name"}))
-                        {
-                            %{$SubProblems{"Interface_Added_Super_Interface_Used_By_Others"}{get_SFormat($SuperInterface)}} = (
-                                "Type_Name"=>$Type1{"Name"},
-                                "Target"=>$SuperInterface,
-                                "Invoked"=>$Invoked,
-                                "InvokedBy"=>$InvokedBy  );
-                        }
-                        else
-                        {
-                            %{$SubProblems{"Interface_Added_Super_Interface"}{get_SFormat($SuperInterface)}} = (
-                                "Type_Name"=>$Type1{"Name"},
-                                "Target"=>$SuperInterface  );
-                        }
-                    }
-                }
-                elsif($HaveFields)
-                {
-                    %{$SubProblems{"Interface_Added_Super_Constant_Interface"}{get_SFormat($SuperInterface)}} = (
-                        "Type_Name"=>$Type2{"Name"},
-                        "Target"=>$SuperInterface  );
-                }
-                else
-                {
-                    # empty interface
-                }
-            }
-            else
-            {
-                if($Type1{"Abstract"} and $Type2{"Abstract"})
-                {
-                    if($HaveMethods and checkDefaultImpl(2, $SuperInterface, $Type2{"Name"}))
-                    {
-                        %{$SubProblems{"Abstract_Class_Added_Super_Interface_With_Implemented_Methods"}{get_SFormat($SuperInterface)}} = (
-                            "Type_Name"=>$Type1{"Name"},
-                            "Target"=>$SuperInterface  );
-                    }
-                    else
-                    {
-                        if(my ($Invoked, $InvokedBy) = getInvoked($Type1{"Name"}))
-                        {
-                            %{$SubProblems{"Abstract_Class_Added_Super_Interface_Invoked_By_Others"}{get_SFormat($SuperInterface)}} = (
-                                "Type_Name"=>$Type1{"Name"},
-                                "Target"=>$SuperInterface,
-                                "Invoked"=>$Invoked,
-                                "InvokedBy"=>$InvokedBy  );
-                        }
-                        else
-                        {
-                            %{$SubProblems{"Abstract_Class_Added_Super_Interface"}{get_SFormat($SuperInterface)}} = (
-                                "Type_Name"=>$Type1{"Name"},
-                                "Target"=>$SuperInterface  );
-                        }
-                    }
-                }
-            }
-        }
-    }
-    foreach my $SuperInterface (keys(%SuperInterfaces_Old))
-    {
-        if(not $SuperInterfaces_New{$SuperInterface})
-        {
-            my $HaveMethods = keys(%{$Class_AbstractMethods{1}{$SuperInterface}});
-            my $HaveFields = keys(%{$Class_Fields{1}{$SuperInterface}});
-            
-            if($Type1{"Type"} eq "interface")
-            {
-                if($HaveMethods
-                or $SuperInterface=~/\Ajava\./)
-                {
-                    %{$SubProblems{"Interface_Removed_Super_Interface"}{get_SFormat($SuperInterface)}} = (
-                        "Type_Name"=>$Type1{"Name"},
-                        "Type_Type"=>"interface",
-                        "Target"=>$SuperInterface  );
-                }
-                elsif($HaveFields)
-                {
-                    %{$SubProblems{"Interface_Removed_Super_Constant_Interface"}{get_SFormat($SuperInterface)}} = (
-                        "Type_Name"=>$Type1{"Name"},
-                        "Target"=>$SuperInterface  );
-                }
-                else {
-                    # empty interface
-                }
-            }
-            else
-            {
-                %{$SubProblems{"Class_Removed_Super_Interface"}{get_SFormat($SuperInterface)}} = (
-                    "Type_Name"=>$Type1{"Name"},
-                    "Type_Type"=>"class",
-                    "Target"=>$SuperInterface  );
-            }
-        }
-    }
-    
-    foreach my $Field_Name (sort keys(%{$Type1{"Fields"}}))
-    {# check older fields
-        my $Access1 = $Type1{"Fields"}{$Field_Name}{"Access"};
-        if($Access1=~/private/) {
-            next;
-        }
-        
-        my $Field_Pos1 = $Type1{"Fields"}{$Field_Name}{"Pos"};
-        my $FieldType1_Id = $Type1{"Fields"}{$Field_Name}{"Type"};
-        my %FieldType1 = get_Type($FieldType1_Id, 1);
-        
-        if(not $Type2{"Fields"}{$Field_Name})
-        {# removed fields
-            my $StraightPair_Name = findFieldPair($Field_Pos1, \%Type2);
-            if($StraightPair_Name ne "lost" and not $Type1{"Fields"}{$StraightPair_Name}
-            and $FieldType1{"Name"} eq get_TypeName($Type2{"Fields"}{$StraightPair_Name}{"Type"}, 2))
-            {
-                if(my $Constant = get_ConstantValue($Type1{"Fields"}{$Field_Name}{"Value"}, $FieldType1{"Name"}))
-                {
-                    %{$SubProblems{"Renamed_Constant_Field"}{$Field_Name}}=(
-                        "Target"=>$Field_Name,
-                        "Type_Name"=>$Type1{"Name"},
-                        "Old_Value"=>$Field_Name,
-                        "New_Value"=>$StraightPair_Name,
-                        "Field_Type"=>$FieldType1{"Name"},
-                        "Field_Value"=>$Constant  );
-                }
-                else
-                {
-                    %{$SubProblems{"Renamed_Field"}{$Field_Name}}=(
-                        "Target"=>$Field_Name,
-                        "Type_Name"=>$Type1{"Name"},
-                        "Old_Value"=>$Field_Name,
-                        "New_Value"=>$StraightPair_Name,
-                        "Field_Type"=>$FieldType1{"Name"}  );
-                }
-            }
-            else
-            {
-                if(my $Constant = get_ConstantValue($Type1{"Fields"}{$Field_Name}{"Value"}, $FieldType1{"Name"}))
-                { # has a compile-time constant value
-                    %{$SubProblems{"Removed_Constant_Field"}{$Field_Name}}=(
-                        "Target"=>$Field_Name,
-                        "Type_Name"=>$Type1{"Name"},
-                        "Field_Value"=>$Constant,
-                        "Field_Type"=>$FieldType1{"Name"},
-                        "Type_Type"=>$Type1{"Type"}  );
-                }
-                else
-                {
-                    %{$SubProblems{"Removed_NonConstant_Field"}{$Field_Name}}=(
-                        "Target"=>$Field_Name,
-                        "Type_Name"=>$Type1{"Name"},
-                        "Type_Type"=>$Type1{"Type"},
-                        "Field_Type"=>$FieldType1{"Name"}  );
-                }
-            }
-            next;
-        }
-        my $FieldType2_Id = $Type2{"Fields"}{$Field_Name}{"Type"};
-        my %FieldType2 = get_Type($FieldType2_Id, 2);
-        
-        if(not $Type1{"Fields"}{$Field_Name}{"Static"}
-        and $Type2{"Fields"}{$Field_Name}{"Static"})
-        {
-            if(not $Type1{"Fields"}{$Field_Name}{"Value"})
-            {
-                %{$SubProblems{"NonConstant_Field_Became_Static"}{$Field_Name}}=(
-                    "Target"=>$Field_Name,
-                    "Field_Type"=>$FieldType1{"Name"},
-                    "Type_Name"=>$Type1{"Name"}  );
-            }
-        }
-        elsif($Type1{"Fields"}{$Field_Name}{"Static"}
-        and not $Type2{"Fields"}{$Field_Name}{"Static"})
-        {
-            if($Type1{"Fields"}{$Field_Name}{"Value"})
-            {
-                %{$SubProblems{"Constant_Field_Became_NonStatic"}{$Field_Name}}=(
-                    "Target"=>$Field_Name,
-                    "Field_Type"=>$FieldType1{"Name"},
-                    "Type_Name"=>$Type1{"Name"}  );
-            }
-            else
-            {
-                %{$SubProblems{"NonConstant_Field_Became_NonStatic"}{$Field_Name}}=(
-                    "Target"=>$Field_Name,
-                    "Field_Type"=>$FieldType1{"Name"},
-                    "Type_Name"=>$Type1{"Name"}  );
-            }
-        }
-        if(not $Type1{"Fields"}{$Field_Name}{"Final"}
-        and $Type2{"Fields"}{$Field_Name}{"Final"})
-        {
-            %{$SubProblems{"Field_Became_Final"}{$Field_Name}}=(
-                "Target"=>$Field_Name,
-                "Field_Type"=>$FieldType1{"Name"},
-                "Type_Name"=>$Type1{"Name"}  );
-        }
-        elsif($Type1{"Fields"}{$Field_Name}{"Final"}
-        and not $Type2{"Fields"}{$Field_Name}{"Final"})
-        {
-            %{$SubProblems{"Field_Became_NonFinal"}{$Field_Name}}=(
-                "Target"=>$Field_Name,
-                "Field_Type"=>$FieldType1{"Name"},
-                "Type_Name"=>$Type1{"Name"}  );
-        }
-        my $Access2 = $Type2{"Fields"}{$Field_Name}{"Access"};
-        if($Access1 eq "public" and $Access2=~/protected|private/
-        or $Access1 eq "protected" and $Access2=~/private/)
-        {
-            %{$SubProblems{"Changed_Field_Access"}{$Field_Name}}=(
-                "Target"=>$Field_Name,
-                "Type_Name"=>$Type1{"Name"},
-                "Old_Value"=>$Access1,
-                "New_Value"=>$Access2  );
-        }
-        
-        my $Value1 = get_ConstantValue($Type1{"Fields"}{$Field_Name}{"Value"}, $FieldType1{"Name"});
-        my $Value2 = get_ConstantValue($Type2{"Fields"}{$Field_Name}{"Value"}, $FieldType2{"Name"});
-        
-        if($Value1 ne $Value2)
-        {
-            if($Value1 and $Value2)
-            {
-                if($Type1{"Fields"}{$Field_Name}{"Final"}
-                and $Type2{"Fields"}{$Field_Name}{"Final"})
-                {
-                    if($Field_Name=~/(\A|_)(VERSION|VERNUM|BUILDNUMBER|BUILD)(_|\Z)/i)
-                    {
-                        %{$SubProblems{"Changed_Final_Version_Field_Value"}{$Field_Name}}=(
-                            "Target"=>$Field_Name,
-                            "Field_Type"=>$FieldType1{"Name"},
-                            "Type_Name"=>$Type1{"Name"},
-                            "Old_Value"=>$Value1,
-                            "New_Value"=>$Value2  );
-                    }
-                    else
-                    {
-                        %{$SubProblems{"Changed_Final_Field_Value"}{$Field_Name}}=(
-                            "Target"=>$Field_Name,
-                            "Field_Type"=>$FieldType1{"Name"},
-                            "Type_Name"=>$Type1{"Name"},
-                            "Old_Value"=>$Value1,
-                            "New_Value"=>$Value2  );
-                    }
-                }
-            }
-        }
-        
-        my %Sub_SubChanges = detectTypeChange($FieldType1_Id, $FieldType2_Id, "Field");
-        foreach my $Sub_SubProblemType (keys(%Sub_SubChanges))
-        {
-            %{$SubProblems{$Sub_SubProblemType}{$Field_Name}}=(
-                "Target"=>$Field_Name,
-                "Type_Name"=>$Type1{"Name"});
-            
-            foreach my $Attr (keys(%{$Sub_SubChanges{$Sub_SubProblemType}}))
-            {
-                $SubProblems{$Sub_SubProblemType}{$Field_Name}{$Attr} = $Sub_SubChanges{$Sub_SubProblemType}{$Attr};
-            }
-        }
-        
-        if($FieldType1_Id and $FieldType2_Id)
-        { # check field type change
-            my $Sub_SubProblems = mergeTypes($FieldType1_Id, $FieldType2_Id);
-            my %DupProblems = ();
-            
-            foreach my $Sub_SubProblemType (sort keys(%{$Sub_SubProblems}))
-            {
-                foreach my $Sub_SubLocation (sort {length($a)<=>length($b)} sort keys(%{$Sub_SubProblems->{$Sub_SubProblemType}}))
-                {
-                    if(not defined $AllAffected)
-                    {
-                        if(defined $DupProblems{$Sub_SubProblems->{$Sub_SubProblemType}{$Sub_SubLocation}}) {
-                            next;
+                        if(defined $DupProblems{$Sub_SubProblems->{$Sub_SubProblemType}{$Sub_SubLocation}}) {
+                            next;
                         }
                     }
                     
                     my $NewLocation = ($Sub_SubLocation)?$Field_Name.".".$Sub_SubLocation:$Field_Name;
                     $SubProblems{$Sub_SubProblemType}{$NewLocation} = $Sub_SubProblems->{$Sub_SubProblemType}{$Sub_SubLocation};
                     
-                    if(not defined $AllAffected)
+                    if(not defined $In::Opt{"AllAffected"})
                     {
                         $DupProblems{$Sub_SubProblems->{$Sub_SubProblemType}{$Sub_SubLocation}} = 1;
                     }
@@ -1974,13 +1385,13 @@ sub mergeTypes($$)
         }
         my $FieldPos2 = $Type2{"Fields"}{$Field_Name}{"Pos"};
         my $FieldType2_Id = $Type2{"Fields"}{$Field_Name}{"Type"};
-        my %FieldType2 = get_Type($FieldType2_Id, 2);
+        my $FieldType2_Name = getTypeName($FieldType2_Id, 2);
         
         if(not $Type1{"Fields"}{$Field_Name})
         {# added fields
             my $StraightPair_Name = findFieldPair($FieldPos2, \%Type1);
             if($StraightPair_Name ne "lost" and not $Type2{"Fields"}{$StraightPair_Name}
-            and get_TypeName($Type1{"Fields"}{$StraightPair_Name}{"Type"}, 1) eq $FieldType2{"Name"})
+            and getTypeName($Type1{"Fields"}{$StraightPair_Name}{"Type"}, 1) eq $FieldType2_Name)
             {
                 # Already reported as "Renamed_Field" or "Renamed_Constant_Field"
             }
@@ -1990,13 +1401,13 @@ sub mergeTypes($$)
                 {
                     %{$SubProblems{"Interface_Added_Field"}{$Field_Name}}=(
                         "Target"=>$Field_Name,
-                        "Type_Name"=>$Type1{"Name"}  );
+                        "Type_Name"=>$Type1{"Name"});
                 }
                 else
                 {
                     %{$SubProblems{"Class_Added_Field"}{$Field_Name}}=(
                         "Target"=>$Field_Name,
-                        "Type_Name"=>$Type1{"Name"}  );
+                        "Type_Name"=>$Type1{"Name"});
                 }
             }
         }
@@ -2009,13 +1420,13 @@ sub mergeTypes($$)
 sub checkDefaultImpl($$$)
 { # Check if all abstract methods of the super class have
   # default implementations in the class
-    my ($LibVersion, $SuperClassName, $ClassName) = @_;
+    my ($LVer, $SuperClassName, $ClassName) = @_;
     
-    foreach my $Method (keys(%{$Class_AbstractMethods{$LibVersion}{$SuperClassName}}))
+    foreach my $Method (keys(%{$Class_AbstractMethods{$LVer}{$SuperClassName}}))
     {
-        if(my $Overridden = findMethod_Class($Method, $ClassName, $LibVersion))
+        if(my $Overridden = findMethod_Class($Method, $ClassName, $LVer))
         {
-            if($MethodInfo{$LibVersion}{$Overridden}{"Abstract"}) {
+            if($MethodInfo{$LVer}{$Overridden}{"Abstract"}) {
                 return 0;
             }
         }
@@ -2027,407 +1438,25 @@ sub checkDefaultImpl($$$)
     return 1;
 }
 
-sub unmangle($)
+sub getMSuffix($)
 {
-    my $Name = $_[0];
-    $Name=~s!/!.!g;
-    $Name=~s!:\(!(!g;
-    $Name=~s!\).+\Z!)!g;
-    if($Name=~/\A(.+)\((.+)\)/)
-    {
-        my ($ShortName, $MangledParams) = ($1, $2);
-        my @UnmangledParams = ();
-        my ($IsArray, $Shift, $Pos, $CurParam) = (0, 0, 0, "");
-        while($Pos<length($MangledParams))
-        {
-            my $Symbol = substr($MangledParams, $Pos, 1);
-            if($Symbol eq "[")
-            { # array
-                $IsArray = 1;
-                $Pos+=1;
-            }
-            elsif($Symbol eq "L")
-            { # class
-                if(substr($MangledParams, $Pos+1)=~/\A(.+?);/) {
-                    $CurParam = $1;
-                    $Shift = length($CurParam)+2;
-                }
-                if($IsArray) {
-                    $CurParam .= "[]";
-                }
-                $Pos+=$Shift;
-                push(@UnmangledParams, $CurParam);
-                ($IsArray, $Shift, $CurParam) = (0, 0, "")
-            }
-            else
-            {
-                if($Symbol eq "C") {
-                    $CurParam = "char";
-                }
-                elsif($Symbol eq "B") {
-                    $CurParam = "byte";
-                }
-                elsif($Symbol eq "S") {
-                    $CurParam = "short";
-                }
-                elsif($Symbol eq "S") {
-                    $CurParam = "short";
-                }
-                elsif($Symbol eq "I") {
-                    $CurParam = "int";
-                }
-                elsif($Symbol eq "F") {
-                    $CurParam = "float";
-                }
-                elsif($Symbol eq "J") {
-                    $CurParam = "long";
-                }
-                elsif($Symbol eq "D") {
-                    $CurParam = "double";
-                }
-                else {
-                    printMsg("INFO", "WARNING: unmangling error");
-                }
-                if($IsArray) {
-                    $CurParam .= "[]";
-                }
-                $Pos+=1;
-                push(@UnmangledParams, $CurParam);
-                ($IsArray, $Shift, $CurParam) = (0, 0, "")
-            }
-        }
-        return $ShortName."(".join(", ", @UnmangledParams).")";
-    }
-    else {
-        return $Name;
+    my $Method = $_[0];
+    if($Method=~/(\(.*\))/) {
+        return $1;
     }
+    return "";
 }
 
-sub get_TypeName($$)
-{
-    my ($TypeId, $LibVersion) = @_;
-    return $TypeInfo{$LibVersion}{$TypeId}{"Name"};
-}
-
-sub get_ShortName($$)
-{
-    my ($TypeId, $LibVersion) = @_;
-    my $TypeName = $TypeInfo{$LibVersion}{$TypeId}{"Name"};
-    $TypeName=~s/\A.*\.//g;
-    return $TypeName;
-}
-
-sub get_TypeType($$)
+sub getMShort($)
 {
-    my ($TypeId, $LibVersion) = @_;
-    return $TypeInfo{$LibVersion}{$TypeId}{"Type"};
+    my $Method = $_[0];
+    if($Method=~/([^\.]+)\:\(/) {
+        return $1;
+    }
+    return "";
 }
 
-sub get_TypeHeader($$)
-{
-    my ($TypeId, $LibVersion) = @_;
-    return $TypeInfo{$LibVersion}{$TypeId}{"Header"};
-}
-
-sub get_BaseType($$)
-{
-    my ($TypeId, $LibVersion) = @_;
-    return "" if(not $TypeId);
-    if(defined $Cache{"get_BaseType"}{$TypeId}{$LibVersion}) {
-        return %{$Cache{"get_BaseType"}{$TypeId}{$LibVersion}};
-    }
-    return "" if(not $TypeInfo{$LibVersion}{$TypeId});
-    my %Type = %{$TypeInfo{$LibVersion}{$TypeId}};
-    return %Type if(not $Type{"BaseType"});
-    %Type = get_BaseType($Type{"BaseType"}, $LibVersion);
-    $Cache{"get_BaseType"}{$TypeId}{$LibVersion} = \%Type;
-    return %Type;
-}
-
-sub get_OneStep_BaseType($$)
-{
-    my ($TypeId, $LibVersion) = @_;
-    return "" if(not $TypeId);
-    return "" if(not $TypeInfo{$LibVersion}{$TypeId});
-    my %Type = %{$TypeInfo{$LibVersion}{$TypeId}};
-    return %Type if(not $Type{"BaseType"});
-    return get_Type($Type{"BaseType"}, $LibVersion);
-}
-
-sub get_Type($$)
-{
-    my ($TypeId, $LibVersion) = @_;
-    return "" if(not $TypeId);
-    return "" if(not $TypeInfo{$LibVersion}{$TypeId});
-    return %{$TypeInfo{$LibVersion}{$TypeId}};
-}
-
-sub classFilter($$$)
-{
-    my ($Class, $LibVersion, $ClassContext) = @_;
-    
-    if(defined $Class->{"Dep"}) {
-        return 0;
-    }
-    
-    my $CName = $Class->{"Name"};
-    my $Package = $Class->{"Package"};
-    
-    if(defined $ClassListPath
-    and not defined $ClassList_User{$CName})
-    { # user defined classes
-        return 0;
-    }
-    
-    if(defined $SkipClassesList
-    and defined $SkipClasses{$CName})
-    { # user defined classes
-        return 0;
-    }
-    
-    if(skipPackage($Package, $LibVersion))
-    { # internal packages
-        return 0;
-    }
-    
-    if(skipType($CName))
-    { # internal types
-        return 0;
-    }
-    
-    if($ClassContext)
-    {
-        my @Ann = ();
-        
-        if(defined $Class->{"Annotations"}) {
-            @Ann = keys(%{$Class->{"Annotations"}});
-        }
-        
-        if(not annotationFilter(\@Ann, $LibVersion)) {
-            return 0;
-        }
-        
-        if($ClientPath)
-        {
-            if(not defined $UsedClasses_Client{$CName}) {
-                return 0;
-            }
-        }
-    }
-    
-    return 1;
-}
-
-sub annotationFilter($$)
-{
-    my ($Ann, $LibVersion) = @_;
-    
-    if(not defined $CountMethods)
-    {
-        if(defined $AddedAnnotations and $LibVersion==1) {
-            return 1;
-        }
-        
-        if(defined $RemovedAnnotations and $LibVersion==2) {
-            return 1;
-        }
-    }
-    
-    if($SkipAnnotationsListPath)
-    {
-        foreach my $Aid (@{$Ann})
-        {
-            my $AName = $TypeInfo{$LibVersion}{$Aid}{"Name"};
-            
-            if(defined $SkipAnnotationList_User{$AName}) {
-                return 0;
-            }
-        }
-    }
-    
-    if($AnnotationsListPath)
-    {
-        my $Annotated = 0;
-        
-        foreach my $Aid (@{$Ann})
-        {
-            my $AName = $TypeInfo{$LibVersion}{$Aid}{"Name"};
-            
-            if(defined $AnnotationList_User{$AName})
-            {
-                $Annotated = 1;
-                last;
-            }
-        }
-        
-        if(not $Annotated) {
-            return 0;
-        }
-    }
-    
-    return 1;
-}
-
-sub methodFilter($$)
-{
-    my ($Method, $LibVersion) = @_;
-    
-    if(defined $MethodInfo{$LibVersion}{$Method}{"Dep"}) {
-        return 0;
-    }
-    
-    if($MethodInfo{$LibVersion}{$Method}{"Access"}=~/private/)
-    { # non-public
-        return 0;
-    }
-    
-    my $ClassId = $MethodInfo{$LibVersion}{$Method}{"Class"};
-    my %Class = get_Type($ClassId, $LibVersion);
-    
-    if($Class{"Access"}=~/private/)
-    { # skip private classes
-        return 0;
-    }
-    
-    my $Package = $MethodInfo{$LibVersion}{$Method}{"Package"};
-    
-    my @Ann = ();
-    
-    if(defined $Class{"Annotations"}) {
-        @Ann = (@Ann, keys(%{$Class{"Annotations"}}));
-    }
-    
-    if(defined $MethodInfo{$LibVersion}{$Method}{"Annotations"}) {
-        @Ann = (@Ann, keys(%{$MethodInfo{$LibVersion}{$Method}{"Annotations"}}));
-    }
-    
-    if(not annotationFilter(\@Ann, $LibVersion)) {
-        return 0;
-    }
-    
-    if($ClientPath)
-    { # user defined application
-        if(not defined $UsedMethods_Client{$Method}
-        and not defined $UsedClasses_Client{$Class{"Name"}}) {
-            return 0;
-        }
-    }
-    
-    if(skipPackage($Package, $LibVersion))
-    { # internal packages
-        return 0;
-    }
-    
-    if(not classFilter(\%Class, $LibVersion, 0)) {
-        return 0;
-    }
-    
-    if(defined $SkipDeprecated)
-    {
-        if($Class{"Deprecated"})
-        { # deprecated class
-            return 0;
-        }
-        if($MethodInfo{$LibVersion}{$Method}{"Deprecated"})
-        { # deprecated method
-            return 0;
-        }
-    }
-    
-    return 1;
-}
-
-sub skipType($)
-{
-    my $TName = $_[0];
-    
-    if(defined $SkipInternalTypes)
-    {
-        if($TName=~/($SkipInternalTypes)/) {
-            return 1;
-        }
-    }
-    
-    return 0;
-}
-
-sub skipPackage($$)
-{
-    my ($Package, $LibVersion) = @_;
-    return 0 if(not $Package);
-    
-    if(defined $SkipInternalPackages)
-    {
-        if($Package=~/($SkipInternalPackages)/) {
-            return 1;
-        }
-    }
-    
-    if(defined $SkipPackages{$LibVersion})
-    {
-        foreach my $SkipPackage (keys(%{$SkipPackages{$LibVersion}}))
-        {
-            if($Package=~/\A\Q$SkipPackage\E(\.|\Z)/)
-            { # user skipped packages
-                return 1;
-            }
-        }
-    }
-    
-    if(not defined $KeepInternal)
-    {
-        my $Note = (not keys %SkippedPackage)?" (use --keep-internal option to check them)":"";
-        
-        if($Package=~/(\A|\.)(internal|impl|examples)(\.|\Z)/)
-        { # internal packages
-            if(not $SkippedPackage{$LibVersion}{$2})
-            {
-                $SkippedPackage{$LibVersion}{$2} = 1;
-                printMsg("WARNING", "skip \"$2\" packages".$Note);
-            }
-            return 1;
-        }
-    }
-    
-    if(defined $KeepPackages{$LibVersion}
-    and my @Keeped = keys(%{$KeepPackages{$LibVersion}}))
-    {
-        my $UserKeeped = 0;
-        foreach my $KeepPackage (@Keeped)
-        {
-            if($Package=~/\A\Q$KeepPackage\E(\.|\Z)/)
-            { # user keeped packages
-                $UserKeeped = 1;
-                last;
-            }
-        }
-        if(not $UserKeeped) {
-            return 1;
-        }
-    }
-    
-    return 0;
-}
-
-sub get_MSuffix($)
-{
-    my $Method = $_[0];
-    if($Method=~/(\(.*\))/) {
-        return $1;
-    }
-    return "";
-}
-
-sub get_MShort($)
-{
-    my $Method = $_[0];
-    if($Method=~/([^\.]+)\:\(/) {
-        return $1;
-    }
-    return "";
-}
-
-sub findMethod($$$$)
+sub findMethod($$$$)
 {
     my ($Method, $MethodVersion, $ClassName, $ClassVersion) = @_;
     my $ClassId = $TName_Tid{$ClassVersion}{$ClassName};
@@ -2435,7 +1464,7 @@ sub findMethod($$$$)
     if($ClassId)
     {
         my @Search = ();
-        if(get_TypeType($ClassId, $ClassVersion) eq "class")
+        if(getTypeType($ClassId, $ClassVersion) eq "class")
         {
             if(my $SuperClassId = $TypeInfo{$ClassVersion}{$ClassId}{"SuperClass"}) {
                 push(@Search, $SuperClassId);
@@ -2456,7 +1485,7 @@ sub findMethod($$$$)
                 next;
             }
             
-            my $SuperName = get_TypeName($SuperId, $ClassVersion);
+            my $SuperName = getTypeName($SuperId, $ClassVersion);
             
             if(my $MethodInClass = findMethod_Class($Method, $SuperName, $ClassVersion)) {
                 return $MethodInClass;
@@ -2467,15 +1496,15 @@ sub findMethod($$$$)
         }
     }
     
-    my $TargetSuffix = get_MSuffix($Method);
-    my $TargetShortName = get_MShort($Method);
+    my $TargetSuffix = getMSuffix($Method);
+    my $TargetShortName = getMShort($Method);
     
     # search in java.lang.Object
     foreach my $C (keys(%JavaObjectMethod))
     {
-        if($TargetSuffix eq get_MSuffix($C))
+        if($TargetSuffix eq getMSuffix($C))
         {
-            if($TargetShortName eq get_MShort($C)) {
+            if($TargetShortName eq getMShort($C)) {
                 return $C;
             }
         }
@@ -2487,8 +1516,8 @@ sub findMethod($$$$)
 sub findMethod_Class($$$)
 {
     my ($Method, $ClassName, $ClassVersion) = @_;
-    my $TargetSuffix = get_MSuffix($Method);
-    my $TargetShortName = get_MShort($Method);
+    my $TargetSuffix = getMSuffix($Method);
+    my $TargetShortName = getMShort($Method);
     
     if(not defined $Class_Methods{$ClassVersion}{$ClassName}) {
         return undef;
@@ -2497,9 +1526,9 @@ sub findMethod_Class($$$)
     foreach my $Candidate (sort keys(%{$Class_Methods{$ClassVersion}{$ClassName}}))
     { # search for method with the same parameters suffix
         next if($MethodInfo{$ClassVersion}{$Candidate}{"Constructor"});
-        if($TargetSuffix eq get_MSuffix($Candidate))
+        if($TargetSuffix eq getMSuffix($Candidate))
         {
-            if($TargetShortName eq get_MShort($Candidate)) {
+            if($TargetShortName eq getMShort($Candidate)) {
                 return $Candidate;
             }
         }
@@ -2508,18 +1537,70 @@ sub findMethod_Class($$$)
     return undef;
 }
 
-sub prepareMethods($)
+sub prepareData($)
 {
-    my $LibVersion = $_[0];
-    foreach my $Method (keys(%{$MethodInfo{$LibVersion}}))
+    my $LVer = $_[0];
+    
+    if(my $MUsed = $In::API{$LVer}{"MethodUsed"})
+    {
+        foreach my $M_Id (keys(%{$MUsed}))
+        {
+            my $Name = $MUsed->{$M_Id}{"Name"};
+            $MethodUsed{$LVer}{$Name} = $MUsed->{$M_Id}{"Used"};
+        }
+    }
+    
+    foreach my $TypeId (keys(%{$TypeInfo{$LVer}}))
+    {
+        my $TypeAttr = $TypeInfo{$LVer}{$TypeId};
+        my $TName = $TypeAttr->{"Name"};
+        
+        $TName_Tid{$LVer}{$TName} = $TypeId;
+        
+        if(not $TypeAttr->{"Dep"})
+        {
+            if(my $Archive = $TypeAttr->{"Archive"}) {
+                $LibArchives{$LVer}{$Archive} = 1;
+            }
+        }
+        
+        foreach my $FieldName (keys(%{$TypeAttr->{"Fields"}}))
+        {
+            if($TypeAttr->{"Fields"}{$FieldName}{"Access"}=~/public|protected/) {
+                $Class_Fields{$LVer}{$TName}{$FieldName} = $TypeAttr->{"Fields"}{$FieldName}{"Type"};
+            }
+        }
+    }
+    
+    foreach my $Method (keys(%{$MethodInfo{$LVer}}))
+    {
+        my $Name = $MethodInfo{$LVer}{$Method}{"Name"};
+        $MethodInfo{$LVer}{$Name} = delete($MethodInfo{$LVer}{$Method});
+    }
+    
+    foreach my $Method (keys(%{$MethodInfo{$LVer}}))
     {
-        if($MethodInfo{$LibVersion}{$Method}{"Access"}!~/private/)
+        my $MAttr = $MethodInfo{$LVer}{$Method};
+        
+        $MAttr->{"Signature"} = getSignature($Method, $LVer, "Full");
+        
+        if(my $ClassId = $MAttr->{"Class"}
+        and $MAttr->{"Access"}=~/public|protected/)
         {
-            if($MethodInfo{$LibVersion}{$Method}{"Constructor"}) {
-                registerUsage($MethodInfo{$LibVersion}{$Method}{"Class"}, $LibVersion);
+            my $CName = getTypeName($ClassId, $LVer);
+            $Class_Methods{$LVer}{$CName}{$Method} = 1;
+            if($MAttr->{"Abstract"}) {
+                $Class_AbstractMethods{$LVer}{$CName}{$Method} = 1;
+            }
+        }
+        
+        if($MAttr->{"Access"}!~/private/)
+        {
+            if($MAttr->{"Constructor"}) {
+                registerUsage($MAttr->{"Class"}, $LVer);
             }
             else {
-                registerUsage($MethodInfo{$LibVersion}{$Method}{"Return"}, $LibVersion);
+                registerUsage($MAttr->{"Return"}, $LVer);
             }
         }
     }
@@ -2541,18 +1622,19 @@ sub mergeMethods()
         }
         
         my $ClassId1 = $MethodInfo{1}{$Method}{"Class"};
-        my %Class1 = get_Type($ClassId1, 1);
+        my $Class1_Name = getTypeName($ClassId1, 1);
+        my $Class1_Type = getTypeType($ClassId1, 1);
         
-        $CheckedTypes{$Class1{"Name"}} = 1;
+        $CheckedTypes{$Class1_Name} = 1;
         $CheckedMethods{$Method} = 1;
         
-        my %Class2 = get_Type($MethodInfo{2}{$Method}{"Class"}, 2);
         if(not $MethodInfo{1}{$Method}{"Static"}
-        and $Class1{"Type"} eq "class" and not $Class_Constructed{1}{$ClassId1})
+        and $Class1_Type eq "class" and not $Class_Constructed{1}{$ClassId1})
         { # class cannot be constructed or inherited by clients
           # non-static method cannot be called
             next;
         }
+        
         # checking attributes
         if(not $MethodInfo{1}{$Method}{"Static"}
         and $MethodInfo{2}{$Method}{"Static"}) {
@@ -2562,6 +1644,7 @@ sub mergeMethods()
         and not $MethodInfo{2}{$Method}{"Static"}) {
             %{$CompatProblems{$Method}{"Method_Became_NonStatic"}{""}} = ();
         }
+        
         if(not $MethodInfo{1}{$Method}{"Synchronized"}
         and $MethodInfo{2}{$Method}{"Synchronized"}) {
             %{$CompatProblems{$Method}{"Method_Became_Synchronized"}{""}} = ();
@@ -2570,6 +1653,7 @@ sub mergeMethods()
         and not $MethodInfo{2}{$Method}{"Synchronized"}) {
             %{$CompatProblems{$Method}{"Method_Became_NonSynchronized"}{""}} = ();
         }
+        
         if(not $MethodInfo{1}{$Method}{"Final"}
         and $MethodInfo{2}{$Method}{"Final"})
         {
@@ -2580,73 +1664,79 @@ sub mergeMethods()
                 %{$CompatProblems{$Method}{"NonStatic_Method_Became_Final"}{""}} = ();
             }
         }
+        
         my $Access1 = $MethodInfo{1}{$Method}{"Access"};
         my $Access2 = $MethodInfo{2}{$Method}{"Access"};
+        
         if($Access1 eq "public" and $Access2=~/protected|private/
         or $Access1 eq "protected" and $Access2=~/private/)
         {
             %{$CompatProblems{$Method}{"Changed_Method_Access"}{""}} = (
                 "Old_Value"=>$Access1,
-                "New_Value"=>$Access2  );
+                "New_Value"=>$Access2);
         }
-        if($Class1{"Type"} eq "class"
-        and $Class2{"Type"} eq "class")
+        
+        my $Class2_Type = getTypeType($MethodInfo{2}{$Method}{"Class"}, 2);
+        
+        if($Class1_Type eq "class"
+        and $Class2_Type eq "class")
         {
             if(not $MethodInfo{1}{$Method}{"Abstract"}
             and $MethodInfo{2}{$Method}{"Abstract"})
             {
                 %{$CompatProblems{$Method}{"Method_Became_Abstract"}{""}} = ();
-                %{$CompatProblems{$Method}{"Class_Method_Became_Abstract"}{"this.".get_SFormat($Method)}} = (
-                    "Type_Name"=>$Class1{"Name"},
-                    "Target"=>$Method  );
+                %{$CompatProblems{$Method}{"Class_Method_Became_Abstract"}{"this.".getSFormat($Method)}} = (
+                    "Type_Name"=>$Class1_Name,
+                    "Target"=>$Method);
             }
             elsif($MethodInfo{1}{$Method}{"Abstract"}
             and not $MethodInfo{2}{$Method}{"Abstract"})
             {
                 %{$CompatProblems{$Method}{"Method_Became_NonAbstract"}{""}} = ();
-                %{$CompatProblems{$Method}{"Class_Method_Became_NonAbstract"}{"this.".get_SFormat($Method)}} = (
-                    "Type_Name"=>$Class1{"Name"},
-                    "Target"=>$Method  );
+                %{$CompatProblems{$Method}{"Class_Method_Became_NonAbstract"}{"this.".getSFormat($Method)}} = (
+                    "Type_Name"=>$Class1_Name,
+                    "Target"=>$Method);
             }
         }
-        elsif($Class1{"Type"} eq "interface"
-        and $Class2{"Type"} eq "interface")
+        elsif($Class1_Type eq "interface"
+        and $Class2_Type eq "interface")
         {
             if(not $MethodInfo{1}{$Method}{"Abstract"}
             and $MethodInfo{2}{$Method}{"Abstract"})
             {
                 %{$CompatProblems{$Method}{"Method_Became_NonDefault"}{""}} = ();
-                %{$CompatProblems{$Method}{"Interface_Method_Became_NonDefault"}{"this.".get_SFormat($Method)}} = (
-                    "Type_Name"=>$Class1{"Name"},
-                    "Target"=>$Method  );
+                %{$CompatProblems{$Method}{"Interface_Method_Became_NonDefault"}{"this.".getSFormat($Method)}} = (
+                    "Type_Name"=>$Class1_Name,
+                    "Target"=>$Method);
             }
             elsif($MethodInfo{1}{$Method}{"Abstract"}
             and not $MethodInfo{2}{$Method}{"Abstract"})
             {
                 %{$CompatProblems{$Method}{"Method_Became_Default"}{""}} = ();
-                %{$CompatProblems{$Method}{"Interface_Method_Became_Default"}{"this.".get_SFormat($Method)}} = (
-                    "Type_Name"=>$Class1{"Name"},
-                    "Target"=>$Method  );
+                %{$CompatProblems{$Method}{"Interface_Method_Became_Default"}{"this.".getSFormat($Method)}} = (
+                    "Type_Name"=>$Class1_Name,
+                    "Target"=>$Method);
             }
         }
         
-        my %Exceptions_Old = map {get_TypeName($_, 1) => $_} keys(%{$MethodInfo{1}{$Method}{"Exceptions"}});
-        my %Exceptions_New = map {get_TypeName($_, 2) => $_} keys(%{$MethodInfo{2}{$Method}{"Exceptions"}});
+        my %Exceptions_Old = map {getTypeName($_, 1) => $_} keys(%{$MethodInfo{1}{$Method}{"Exceptions"}});
+        my %Exceptions_New = map {getTypeName($_, 2) => $_} keys(%{$MethodInfo{2}{$Method}{"Exceptions"}});
         foreach my $Exception (keys(%Exceptions_Old))
         {
             if(not $Exceptions_New{$Exception})
             {
-                my %ExceptionType = get_Type($Exceptions_Old{$Exception}, 1);
-                my $SuperClass = $ExceptionType{"SuperClass"};
+                my $EType = getType($Exceptions_Old{$Exception}, 1);
+                my $SuperClass = $EType->{"SuperClass"};
+                
                 if($KnownRuntimeExceptions{$Exception}
-                or defined $SuperClass and get_TypeName($SuperClass, 1) eq "java.lang.RuntimeException")
+                or defined $SuperClass and getTypeName($SuperClass, 1) eq "java.lang.RuntimeException")
                 {
                     if(not $MethodInfo{1}{$Method}{"Abstract"}
                     and not $MethodInfo{2}{$Method}{"Abstract"})
                     {
-                        %{$CompatProblems{$Method}{"Removed_Unchecked_Exception"}{"this.".get_SFormat($Exception)}} = (
-                            "Type_Name"=>$Class1{"Name"},
-                            "Target"=>$Exception  );
+                        %{$CompatProblems{$Method}{"Removed_Unchecked_Exception"}{"this.".getSFormat($Exception)}} = (
+                            "Type_Name"=>$Class1_Name,
+                            "Target"=>$Exception);
                     }
                 }
                 else
@@ -2654,34 +1744,36 @@ sub mergeMethods()
                     if($MethodInfo{1}{$Method}{"Abstract"}
                     and $MethodInfo{2}{$Method}{"Abstract"})
                     {
-                        %{$CompatProblems{$Method}{"Abstract_Method_Removed_Checked_Exception"}{"this.".get_SFormat($Exception)}} = (
-                            "Type_Name"=>$Class1{"Name"},
-                            "Target"=>$Exception  );
+                        %{$CompatProblems{$Method}{"Abstract_Method_Removed_Checked_Exception"}{"this.".getSFormat($Exception)}} = (
+                            "Type_Name"=>$Class1_Name,
+                            "Target"=>$Exception);
                     }
                     else
                     {
-                        %{$CompatProblems{$Method}{"NonAbstract_Method_Removed_Checked_Exception"}{"this.".get_SFormat($Exception)}} = (
-                            "Type_Name"=>$Class1{"Name"},
-                            "Target"=>$Exception  );
+                        %{$CompatProblems{$Method}{"NonAbstract_Method_Removed_Checked_Exception"}{"this.".getSFormat($Exception)}} = (
+                            "Type_Name"=>$Class1_Name,
+                            "Target"=>$Exception);
                     }
                 }
             }
         }
+        
         foreach my $Exception (keys(%Exceptions_New))
         {
             if(not $Exceptions_Old{$Exception})
             {
-                my %ExceptionType = get_Type($Exceptions_New{$Exception}, 2);
-                my $SuperClass = $ExceptionType{"SuperClass"};
+                my $EType = getType($Exceptions_New{$Exception}, 2);
+                my $SuperClass = $EType->{"SuperClass"};
+                
                 if($KnownRuntimeExceptions{$Exception}
-                or defined $SuperClass and get_TypeName($SuperClass, 2) eq "java.lang.RuntimeException")
+                or defined $SuperClass and getTypeName($SuperClass, 2) eq "java.lang.RuntimeException")
                 {
                     if(not $MethodInfo{1}{$Method}{"Abstract"}
                     and not $MethodInfo{2}{$Method}{"Abstract"})
                     {
-                        %{$CompatProblems{$Method}{"Added_Unchecked_Exception"}{"this.".get_SFormat($Exception)}} = (
-                            "Type_Name"=>$Class1{"Name"},
-                            "Target"=>$Exception  );
+                        %{$CompatProblems{$Method}{"Added_Unchecked_Exception"}{"this.".getSFormat($Exception)}} = (
+                            "Type_Name"=>$Class1_Name,
+                            "Target"=>$Exception);
                     }
                 }
                 else
@@ -2689,15 +1781,15 @@ sub mergeMethods()
                     if($MethodInfo{1}{$Method}{"Abstract"}
                     and $MethodInfo{2}{$Method}{"Abstract"})
                     {
-                        %{$CompatProblems{$Method}{"Abstract_Method_Added_Checked_Exception"}{"this.".get_SFormat($Exception)}} = (
-                            "Type_Name"=>$Class1{"Name"},
-                            "Target"=>$Exception  );
+                        %{$CompatProblems{$Method}{"Abstract_Method_Added_Checked_Exception"}{"this.".getSFormat($Exception)}} = (
+                            "Type_Name"=>$Class1_Name,
+                            "Target"=>$Exception);
                     }
                     else
                     {
-                        %{$CompatProblems{$Method}{"NonAbstract_Method_Added_Checked_Exception"}{"this.".get_SFormat($Exception)}} = (
-                            "Type_Name"=>$Class1{"Name"},
-                            "Target"=>$Exception  );
+                        %{$CompatProblems{$Method}{"NonAbstract_Method_Added_Checked_Exception"}{"this.".getSFormat($Exception)}} = (
+                            "Type_Name"=>$Class1_Name,
+                            "Target"=>$Exception);
                     }
                 }
             }
@@ -2778,28 +1870,48 @@ sub detectTypeChange($$$)
 {
     my ($Type1_Id, $Type2_Id, $Prefix) = @_;
     my %LocalProblems = ();
-    my %Type1 = get_Type($Type1_Id, 1);
-    my %Type2 = get_Type($Type2_Id, 2);
-    my %Type1_Base = ($Type1{"Type"} eq "array")?get_OneStep_BaseType($Type1_Id, 1):get_BaseType($Type1_Id, 1);
-    my %Type2_Base = ($Type2{"Type"} eq "array")?get_OneStep_BaseType($Type2_Id, 2):get_BaseType($Type2_Id, 2);
-    return () if(not $Type1{"Name"} or not $Type2{"Name"});
-    return () if(not $Type1_Base{"Name"} or not $Type2_Base{"Name"});
-    if($Type1_Base{"Name"} ne $Type2_Base{"Name"} and $Type1{"Name"} eq $Type2{"Name"})
+    
+    my $Type1 = getType($Type1_Id, 1);
+    my $Type2 = getType($Type2_Id, 2);
+    
+    my $Type1_Name = $Type1->{"Name"};
+    my $Type2_Name = $Type2->{"Name"};
+    
+    my $Type1_Base = undef;
+    my $Type2_Base = undef;
+    
+    if($Type1->{"Type"} eq "array") {
+        $Type1_Base = getOneStepBaseType($Type1_Id, 1);
+    }
+    else {
+        $Type1_Base = getBaseType($Type1_Id, 1);
+    }
+    
+    if($Type2->{"Type"} eq "array") {
+        $Type2_Base = getOneStepBaseType($Type2_Id, 2);
+    }
+    else {
+        $Type2_Base = getBaseType($Type2_Id, 2);
+    }
+    
+    return () if(not $Type1_Name or not $Type2_Name);
+    return () if(not $Type1_Base->{"Name"} or not $Type2_Base->{"Name"});
+    if($Type1_Base->{"Name"} ne $Type2_Base->{"Name"} and $Type1_Name eq $Type2_Name)
     {# base type change
         %{$LocalProblems{"Changed_".$Prefix."_BaseType"}}=(
-            "Old_Value"=>$Type1_Base{"Name"},
-            "New_Value"=>$Type2_Base{"Name"} );
+            "Old_Value"=>$Type1_Base->{"Name"},
+            "New_Value"=>$Type2_Base->{"Name"});
     }
-    elsif($Type1{"Name"} ne $Type2{"Name"})
+    elsif($Type1_Name ne $Type2_Name)
     {# type change
         %{$LocalProblems{"Changed_".$Prefix."_Type"}}=(
-            "Old_Value"=>$Type1{"Name"},
-            "New_Value"=>$Type2{"Name"} );
+            "Old_Value"=>$Type1_Name,
+            "New_Value"=>$Type2_Name);
     }
     return %LocalProblems;
 }
 
-sub htmlSpecChars($)
+sub specChars($)
 {
     my $Str = $_[0];
     if(not defined $Str
@@ -2819,41 +1931,28 @@ sub htmlSpecChars($)
     return $Str;
 }
 
-sub black_Name($$)
-{
-    my ($M, $V) = @_;
-    return "<span class='iname_b'>".highLight_Signature($M, $V)."</span>";
-}
-
-sub black_Name_S($)
-{
-    my $Name = $_[0];
-    $Name=~s!\A(\w+)!<span class='iname_b'>$1</span> !g;
-    return $Name;
-}
-
-sub highLight_Signature($$)
+sub blackName($)
 {
-    my ($M, $V) = @_;
-    return get_Signature($M, $V, "Class|HTML|Italic");
+    my $N = $_[0];
+    return "<span class='iname_b'>".$N."</span>";
 }
 
-sub highLight_Signature_Italic_Color($$)
+sub highLight_ItalicColor($$)
 {
     my ($M, $V) = @_;
-    return get_Signature($M, $V, "Full|HTML|Italic|Color");
+    return getSignature($M, $V, "Full|HTML|Italic|Color");
 }
 
-sub get_Signature($$$)
+sub getSignature($$$)
 {
-    my ($Method, $LibVersion, $Kind) = @_;
-    if(defined $Cache{"get_Signature"}{$LibVersion}{$Method}{$Kind}) {
-        return $Cache{"get_Signature"}{$LibVersion}{$Method}{$Kind};
+    my ($Method, $LVer, $Kind) = @_;
+    if(defined $Cache{"getSignature"}{$LVer}{$Method}{$Kind}) {
+        return $Cache{"getSignature"}{$LVer}{$Method}{$Kind};
     }
     
     # settings
     my ($Full, $Html, $Simple, $Italic, $Color,
-    $ShowParams, $ShowClass, $ShowAttr, $Target) = (0, 0, 0, 0, 0, 0, 0, 0, undef);
+    $ShowParams, $ShowClass, $ShowAttr, $Desc, $Target) = (0, 0, 0, 0, 0, 0, 0, 0, 0, undef);
     
     if($Kind=~/Full/) {
         $Full = 1;
@@ -2882,58 +1981,60 @@ sub get_Signature($$$)
     if($Kind=~/Attr/) {
         $ShowAttr = 1;
     }
+    if($Kind=~/Desc/) {
+        $Desc = 1;
+    }
     
-    if(not defined $MethodInfo{$LibVersion}{$Method}{"ShortName"})
+    if(not defined $MethodInfo{$LVer}{$Method}{"ShortName"})
     { # from java.lang.Object
         if($Html or $Simple) {
-            return htmlSpecChars($Method);
+            return specChars($Method);
         }
-        else
-        {
+        else {
             return $Method;
         }
     }
     
-    my $Signature = $MethodInfo{$LibVersion}{$Method}{"ShortName"};
+    my $Signature = $MethodInfo{$LVer}{$Method}{"ShortName"};
     if($Full or $ShowClass)
     {
-        my $Class = get_TypeName($MethodInfo{$LibVersion}{$Method}{"Class"}, $LibVersion);
+        my $Class = getTypeName($MethodInfo{$LVer}{$Method}{"Class"}, $LVer);
         
-        if($HideTemplates) {
+        if($In::Opt{"HideTemplates"}) {
             $Class=~s/<.*>//g;
         }
         
         if($Html) {
-            $Class = htmlSpecChars($Class);
+            $Class = specChars($Class);
         }
         
         $Signature = $Class.".".$Signature;
     }
     my @Params = ();
     
-    if(defined $MethodInfo{$LibVersion}{$Method}{"Param"})
+    if(defined $MethodInfo{$LVer}{$Method}{"Param"})
     {
         foreach my $PPos (sort {int($a)<=>int($b)}
-        keys(%{$MethodInfo{$LibVersion}{$Method}{"Param"}}))
+        keys(%{$MethodInfo{$LVer}{$Method}{"Param"}}))
         {
-            my $PTid = $MethodInfo{$LibVersion}{$Method}{"Param"}{$PPos}{"Type"};
-            if(my $PTName = get_TypeName($PTid, $LibVersion))
+            my $PTid = $MethodInfo{$LVer}{$Method}{"Param"}{$PPos}{"Type"};
+            if(my $PTName = getTypeName($PTid, $LVer))
             {
-                if($HideTemplates) {
+                if($In::Opt{"HideTemplates"}) {
                     $PTName=~s/<.*>//g;
                 }
                 
-                if(not $ShowPackages) {
+                if(not $In::Opt{"ShowPackages"}) {
                     $PTName=~s/(\A|\<\s*|\,\s*)[a-z0-9\.]+\./$1/g;
                 }
                 
                 if($Html) {
-                    $PTName = htmlSpecChars($PTName);
+                    $PTName = specChars($PTName);
                 }
                 
                 if($Full or $ShowParams)
                 {
-                    my $PName = $MethodInfo{$LibVersion}{$Method}{"Param"}{$PPos}{"Name"};
+                    my $PName = $MethodInfo{$LVer}{$Method}{"Param"}{$PPos}{"Name"};
                     
                     if($Simple) {
                         $PName = "<i>$PName</i>";
@@ -2970,7 +2071,12 @@ sub get_Signature($$$)
     if($Html and not $Simple)
     {
         $Signature .= " ";
-        $Signature .= "<span class='sym_p'>";
+        if($Desc) {
+            $Signature .= "<span class='sym_pd'>";
+        }
+        else {
+            $Signature .= "<span class='sym_p'>";
+        }
         if(@Params)
         {
             foreach my $Pos (0 .. $#Params)
@@ -3012,19 +2118,19 @@ sub get_Signature($$$)
     
     if($Full or $ShowAttr)
     {
-        if($MethodInfo{$LibVersion}{$Method}{"Static"}) {
+        if($MethodInfo{$LVer}{$Method}{"Static"}) {
             $Signature .= " [static]";
         }
-        elsif($MethodInfo{$LibVersion}{$Method}{"Abstract"}) {
+        elsif($MethodInfo{$LVer}{$Method}{"Abstract"}) {
             $Signature .= " [abstract]";
         }
     }
     
     if($Full)
     {
-        if($ShowAccess)
+        if($In::Opt{"ShowAccess"})
         {
-            if(my $Access = $MethodInfo{$LibVersion}{$Method}{"Access"})
+            if(my $Access = $MethodInfo{$LVer}{$Method}{"Access"})
             {
                 if($Access ne "public") {
                     $Signature .= " [".$Access."]";
@@ -3032,32 +2138,32 @@ sub get_Signature($$$)
             }
         }
         
-        if(my $ReturnId = $MethodInfo{$LibVersion}{$Method}{"Return"})
+        if(my $ReturnId = $MethodInfo{$LVer}{$Method}{"Return"})
         {
-            my $RName = get_TypeName($ReturnId, $LibVersion);
+            my $RName = getTypeName($ReturnId, $LVer);
             
-            if($HideTemplates) {
+            if($In::Opt{"HideTemplates"}) {
                 $RName=~s/<.*>//g;
             }
             
-            if(not $ShowPackages) {
+            if(not $In::Opt{"ShowPackages"}) {
                 $RName=~s/(\A|\<\s*|\,\s*)[a-z0-9\.]+\./$1/g;
             }
             
             if($Simple) {
-                $Signature .= " <b>:</b> ".htmlSpecChars($RName);
+                $Signature .= " <b>:</b> ".specChars($RName);
             }
             elsif($Html) {
-                $Signature .= "<span class='sym_p nowrap'>  <b>:</b>  ".htmlSpecChars($RName)."</span>";
+                $Signature .= "<span class='sym_p nowrap'>  <b>:</b>  ".specChars($RName)."</span>";
             }
             else {
                 $Signature .= " : ".$RName;
             }
         }
         
-        if(not $SkipDeprecated)
+        if(not $In::Opt{"SkipDeprecated"})
         {
-            if($MethodInfo{$LibVersion}{$Method}{"Deprecated"}) {
+            if($MethodInfo{$LVer}{$Method}{"Deprecated"}) {
                 $Signature .= " *DEPRECATED*";
             }
         }
@@ -3067,7 +2173,7 @@ sub get_Signature($$$)
     
     if($Html)
     {
-        if(not $SkipDeprecated) {
+        if(not $In::Opt{"SkipDeprecated"}) {
             $Signature=~s!(\*deprecated\*)!<span class='deprecated'>$1</span>!ig;
         }
         
@@ -3083,321 +2189,48 @@ sub get_Signature($$$)
         $Signature=~s!operator=!operator =!g;
     }
     
-    return ($Cache{"get_Signature"}{$LibVersion}{$Method}{$Kind} = $Signature);
+    return ($Cache{"getSignature"}{$LVer}{$Method}{$Kind} = $Signature);
 }
 
-sub checkJavaCompiler($)
-{ # check javac: compile simple program
-    my $Cmd = $_[0];
-    
-    if(not $Cmd) {
-        return;
+sub getReportHeader($)
+{
+    my $Level = $_[0];
+    my $Report_Header = "<h1>";
+    if($Level eq "Source") {
+        $Report_Header .= "Source compatibility";
     }
-    
-    writeFile($TMP_DIR."/test_javac/Simple.java",
-    "public class Simple {
-        public Integer f;
-        public void method(Integer p) { };
-    }");
-    chdir($TMP_DIR."/test_javac");
-    system("$Cmd Simple.java 2>errors.txt");
-    chdir($ORIG_DIR);
-    if($?)
-    {
-        my $Msg = "something is going wrong with the Java compiler (javac):\n";
-        my $Err = readFile($TMP_DIR."/test_javac/errors.txt");
-        $Msg .= $Err;
-        if($Err=~/elf\/start\.S/ and $Err=~/undefined\s+reference\s+to/)
-        { # /usr/lib/gcc/i586-suse-linux/4.5/../../../crt1.o: In function _start:
-          # /usr/src/packages/BUILD/glibc-2.11.3/csu/../sysdeps/i386/elf/start.S:115: undefined reference to main
-            $Msg .= "\nDid you install a JDK-devel package?";
-        }
-        exitStatus("Error", $Msg);
+    elsif($Level eq "Binary") {
+        $Report_Header .= "Binary compatibility";
+    }
+    else {
+        $Report_Header .= "API compatibility";
     }
+    $Report_Header .= " report for the <span style='color:Blue;'>".$In::Opt{"TargetTitle"}."</span> library between <span style='color:Red;'>".$In::Desc{1}{"Version"}."</span> and <span style='color:Red;'>".$In::Desc{2}{"Version"}."</span> versions";
+    if($In::Opt{"ClientPath"}) {
+        $Report_Header .= " (concerning portability of the client: <span style='color:Blue;'>".getFilename($In::Opt{"ClientPath"})."</span>)";
+    }
+    $Report_Header .= "</h1>\n";
+    return $Report_Header;
 }
 
-sub runTests($$$$)
-{
-    my ($TestsPath, $PackageName, $Path_v1, $Path_v2) = @_;
-    # compile with old version of package
-    my $JavacCmd = get_CmdPath("javac");
-    if(not $JavacCmd) {
-        exitStatus("Not_Found", "can't find \"javac\" compiler");
-    }
-    my $JavaCmd = get_CmdPath("java");
-    if(not $JavaCmd) {
-        exitStatus("Not_Found", "can't find \"java\" command");
-    }
-    mkpath($TestsPath."/$PackageName/");
-    foreach my $ClassPath (cmd_find($Path_v1,"","*\.class",""))
-    {# create a compile-time package copy
-        copy($ClassPath, $TestsPath."/$PackageName/");
-    }
-    chdir($TestsPath);
-    system($JavacCmd." -g *.java");
-    chdir($ORIG_DIR);
-    foreach my $TestSrc (cmd_find($TestsPath,"","*\.java",""))
-    { # remove test source
-        unlink($TestSrc);
-    }
-    
-    my $PkgPath = $TestsPath."/".$PackageName;
-    if(-d $PkgPath) {
-        rmtree($PkgPath);
-    }
-    mkpath($PkgPath);
-    foreach my $ClassPath (cmd_find($Path_v2,"","*\.class",""))
-    {# create a run-time package copy
-        copy($ClassPath, $PkgPath."/");
-    }
-    my $TEST_REPORT = "";
-    foreach my $TestPath (cmd_find($TestsPath,"","*\.class",1))
-    {# run tests
-        my $Name = get_filename($TestPath);
-        $Name=~s/\.class\Z//g;
-        chdir($TestsPath);
-        system($JavaCmd." $Name >result.txt 2>&1");
-        chdir($ORIG_DIR);
-        my $Result = readFile($TestsPath."/result.txt");
-        unlink($TestsPath."/result.txt");
-        $TEST_REPORT .= "TEST CASE: $Name\n";
-        if($Result) {
-            $TEST_REPORT .= "RESULT: FAILED\n";
-            $TEST_REPORT .= "OUTPUT:\n$Result\n";
-        }
-        else {
-            $TEST_REPORT .= "RESULT: SUCCESS\n";
-        }
-        $TEST_REPORT .= "\n";
-    }
-    writeFile("$TestsPath/Journal.txt", $TEST_REPORT);
-    
-    if(-d $PkgPath) {
-        rmtree($PkgPath);
-    }
-}
-
-sub compileJavaLib($$$)
-{
-    my ($LibName, $BuildRoot1, $BuildRoot2) = @_;
-    my $JavacCmd = get_CmdPath("javac");
-    if(not $JavacCmd) {
-        exitStatus("Not_Found", "can't find \"javac\" compiler");
-    }
-    checkJavaCompiler($JavacCmd);
-    my $JarCmd = get_CmdPath("jar");
-    if(not $JarCmd) {
-        exitStatus("Not_Found", "can't find \"jar\" command");
-    }
-    writeFile("$BuildRoot1/MANIFEST.MF", "Implementation-Version: 1.0\n");
-    # space before value, new line
-    writeFile("$BuildRoot2/MANIFEST.MF", "Implementation-Version: 2.0\n");
-    my (%SrcDir1, %SrcDir2) = ();
-    foreach my $Path (cmd_find($BuildRoot1,"f","*.java","")) {
-        $SrcDir1{get_dirname($Path)} = 1;
-    }
-    foreach my $Path (cmd_find($BuildRoot2,"f","*.java","")) {
-        $SrcDir2{get_dirname($Path)} = 1;
-    }
-    # build classes v.1
-    foreach my $Dir (keys(%SrcDir1))
-    {
-        chdir($Dir);
-        system("$JavacCmd -g *.java");
-        chdir($ORIG_DIR);
-        if($?) {
-            exitStatus("Error", "can't compile classes v.1");
-        }
-    }
-    # create java archive v.1
-    chdir($BuildRoot1);
-    system("$JarCmd -cmf MANIFEST.MF $LibName.jar TestPackage");
-    chdir($ORIG_DIR);
-    
-    # build classes v.2
-    foreach my $Dir (keys(%SrcDir2))
-    {
-        chdir($Dir);
-        system("$JavacCmd -g *.java");
-        chdir($ORIG_DIR);
-        if($?) {
-            exitStatus("Error", "can't compile classes v.2");
-        }
-    }
-    # create java archive v.2
-    chdir($BuildRoot2);
-    system("$JarCmd -cmf MANIFEST.MF $LibName.jar TestPackage");
-    chdir($ORIG_DIR);
-    
-    foreach my $SrcPath (cmd_find($BuildRoot1,"","*\.java","")) {
-        unlink($SrcPath);
-    }
-    foreach my $SrcPath (cmd_find($BuildRoot2,"","*\.java","")) {
-        unlink($SrcPath);
-    }
-    return 1;
-}
-
-sub readLineNum($$)
-{
-    my ($Path, $Num) = @_;
-    return "" if(not $Path or not -f $Path);
-    open (FILE, $Path);
-    foreach (1 ... $Num) {
-        <FILE>;
-    }
-    my $Line = <FILE>;
-    close(FILE);
-    return $Line;
-}
-
-sub readAttributes($$)
-{
-    my ($Path, $Num) = @_;
-    return () if(not $Path or not -f $Path);
-    my %Attributes = ();
-    if(readLineNum($Path, $Num)=~/<!--\s+(.+)\s+-->/)
-    {
-        foreach my $AttrVal (split(/;/, $1))
-        {
-            if($AttrVal=~/(.+):(.+)/)
-            {
-                my ($Name, $Value) = ($1, $2);
-                $Attributes{$Name} = $Value;
-            }
-        }
-    }
-    return \%Attributes;
-}
-
-sub runChecker($$$)
-{
-    my ($LibName, $Path1, $Path2) = @_;
-    writeFile("$LibName/v1.xml", "
-        <version>
-            1.0
-        </version>
-        <archives>
-            ".get_abs_path($Path1)."
-        </archives>");
-    writeFile("$LibName/v2.xml", "
-        <version>
-            2.0
-        </version>
-        <archives>
-            ".get_abs_path($Path2)."
-        </archives>");
-    my $Cmd = "perl $0 -l $LibName $LibName/v1.xml $LibName/v2.xml";
-    if($Quick) {
-        $Cmd .= " -quick";
-    }
-    if(defined $SkipDeprecated) {
-        $Cmd .= " -skip-deprecated";
-    }
-    if(defined $OldStyle) {
-        $Cmd .= " -old-style";
-    }
-    writeFile($TMP_DIR."/skip-annotations.list", "TestPackage.Beta");
-    $Cmd .= " -skip-annotations-list ".$TMP_DIR."/skip-annotations.list";
-    if($Debug)
-    {
-        $Cmd .= " -debug";
-        printMsg("INFO", "running $Cmd");
-    }
-    system($Cmd);
-    my $Report = "compat_reports/$LibName/1.0_to_2.0/compat_report.html";
-    # Binary
-    my $BReport = readAttributes($Report, 0);
-    my $NProblems = $BReport->{"type_problems_high"}+$BReport->{"type_problems_medium"};
-    $NProblems += $BReport->{"method_problems_high"}+$BReport->{"method_problems_medium"};
-    $NProblems += $BReport->{"removed"};
-    # Source
-    my $SReport = readAttributes($Report, 1);
-    $NProblems += $SReport->{"type_problems_high"}+$SReport->{"type_problems_medium"};
-    $NProblems += $SReport->{"method_problems_high"}+$SReport->{"method_problems_medium"};
-    $NProblems += $SReport->{"removed"};
-    if($NProblems>=100) {
-        printMsg("INFO", "test result: SUCCESS ($NProblems breaks found)\n");
-    }
-    else {
-        printMsg("ERROR", "test result: FAILED ($NProblems breaks found)\n");
-    }
-}
-
-sub writeFile($$)
-{
-    my ($Path, $Content) = @_;
-    return if(not $Path);
-    if(my $Dir = get_dirname($Path)) {
-        mkpath($Dir);
-    }
-    open (FILE, ">".$Path) || die ("can't open file \'$Path\': $!\n");
-    print FILE $Content;
-    close(FILE);
-}
-
-sub readFile($)
-{
-    my $Path = $_[0];
-    return "" if(not $Path or not -f $Path);
-    open (FILE, $Path);
-    my $Content = join("", <FILE>);
-    close(FILE);
-    $Content=~s/\r//g;
-    return $Content;
-}
-
-sub appendFile($$)
-{
-    my ($Path, $Content) = @_;
-    return if(not $Path);
-    if(my $Dir = get_dirname($Path)) {
-        mkpath($Dir);
-    }
-    open(FILE, ">>".$Path) || die ("can't open file \'$Path\': $!\n");
-    print FILE $Content;
-    close(FILE);
-}
-
-sub get_Report_Header($)
-{
-    my $Level = $_[0];
-    my $Report_Header = "<h1>";
-    if($Level eq "Source") {
-        $Report_Header .= "Source compatibility";
-    }
-    elsif($Level eq "Binary") {
-        $Report_Header .= "Binary compatibility";
-    }
-    else {
-        $Report_Header .= "API compatibility";
-    }
-    $Report_Header .= " report for the <span style='color:Blue;'>$TargetTitle</span> library between <span style='color:Red;'>".$Descriptor{1}{"Version"}."</span> and <span style='color:Red;'>".$Descriptor{2}{"Version"}."</span> versions";
-    if($ClientPath) {
-        $Report_Header .= " (concerning portability of the client: <span style='color:Blue;'>".get_filename($ClientPath)."</span>)";
-    }
-    $Report_Header .= "</h1>\n";
-    return $Report_Header;
-}
-
-sub get_SourceInfo()
+sub getSourceInfo()
 {
     my $CheckedArchives = "<a name='Checked_Archives'></a>";
-    if($OldStyle) {
-        $CheckedArchives .= "<h2>Java ARchives (".keys(%{$LibArchives{1}}).")</h2>";
+    if($In::Opt{"OldStyle"}) {
+        $CheckedArchives .= "<h2>Java Archives (".keys(%{$LibArchives{1}}).")</h2>";
     }
     else {
-        $CheckedArchives .= "<h2>Java ARchives <span class='gray'> ".keys(%{$LibArchives{1}})." </span></h2>";
+        $CheckedArchives .= "<h2>Java Archives <span class='gray'> ".keys(%{$LibArchives{1}})." </span></h2>";
     }
     $CheckedArchives .= "\n<hr/><div class='jar_list'>\n";
     foreach my $ArchivePath (sort {lc($a) cmp lc($b)}  keys(%{$LibArchives{1}})) {
-        $CheckedArchives .= get_filename($ArchivePath)."<br/>\n";
+        $CheckedArchives .= getFilename($ArchivePath)."<br/>\n";
     }
     $CheckedArchives .= "</div><br/>$TOP_REF<br/>\n";
     return $CheckedArchives;
 }
 
-sub get_TypeProblems_Count($$)
+sub getTypeProblemsCount($$)
 {
     my ($TargetSeverity, $Level) = @_;
     my $Type_Problems_Count = 0;
@@ -3407,9 +2240,10 @@ sub get_TypeProblems_Count($$)
         my %Kinds_Target = ();
         foreach my $Kind (sort keys(%{$TypeChanges{$Level}{$Type_Name}}))
         {
-            if($TypeProblems_Kind{$Level}{$Kind} ne $TargetSeverity) {
+            if($CompatRules{$Level}{$Kind}{"Severity"} ne $TargetSeverity) {
                 next;
             }
+            
             foreach my $Location (sort keys(%{$TypeChanges{$Level}{$Type_Name}{$Kind}}))
             {
                 my $Target = $TypeChanges{$Level}{$Type_Name}{$Kind}{$Location}{"Target"};
@@ -3427,16 +2261,16 @@ sub get_TypeProblems_Count($$)
     return $Type_Problems_Count;
 }
 
-sub show_number($)
+sub showNum($)
 {
     if($_[0])
     {
-        my $Num = cut_off_number($_[0], 2, 0);
+        my $Num = cutNum($_[0], 2, 0);
         if($Num eq "0")
         {
             foreach my $P (3 .. 7)
             {
-                $Num = cut_off_number($_[0], $P, 1);
+                $Num = cutNum($_[0], $P, 1);
                 if($Num ne "0") {
                     last;
                 }
@@ -3450,7 +2284,7 @@ sub show_number($)
     return $_[0];
 }
 
-sub cut_off_number($$$)
+sub cutNum($$$)
 {
     my ($num, $digs_to_cut, $z) = @_;
     if($num!~/\./)
@@ -3476,24 +2310,25 @@ sub cut_off_number($$$)
     return $num;
 }
 
-sub get_Summary($)
+sub getSummary($)
 {
     my $Level = $_[0];
     my ($Added, $Removed, $M_Problems_High, $M_Problems_Medium, $M_Problems_Low,
-    $T_Problems_High, $T_Problems_Medium, $T_Problems_Low, $M_Other, $T_Other) = (0,0,0,0,0,0,0,0,0,0);
+    $T_Problems_High, $T_Problems_Medium, $T_Problems_Low, $M_Other, $T_Other) = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
     
     %{$RESULT{$Level}} = (
         "Problems"=>0,
         "Warnings"=>0,
-        "Affected"=>0 );
+        "Affected"=>0);
     
     foreach my $Method (sort keys(%CompatProblems))
     {
         foreach my $Kind (sort keys(%{$CompatProblems{$Method}}))
         {
-            if(my $Severity = $MethodProblems_Kind{$Level}{$Kind})
+            if($CompatRules{$Level}{$Kind}{"Kind"} eq "Methods")
             {
-                foreach my $Location (sort keys(%{$CompatProblems{$Method}{$Kind}}))
+                my $Severity = $CompatRules{$Level}{$Kind}{"Severity"};
+                foreach my $Loc (sort keys(%{$CompatProblems{$Method}{$Kind}}))
                 {
                     if($Kind eq "Added_Method")
                     {
@@ -3522,4304 +2357,1385 @@ sub get_Summary($)
                             $M_Other += 1;
                         }
                         elsif($Severity eq "High") {
-                            $M_Problems_High+=1;
-                        }
-                        elsif($Severity eq "Medium") {
-                            $M_Problems_Medium+=1;
-                        }
-                        elsif($Severity eq "Low") {
-                            $M_Problems_Low+=1;
-                        }
-                        if(($Severity ne "Low" or $StrictCompat)
-                        and $Severity ne "Safe") {
-                            $TotalAffected{$Level}{$Method} = $Severity;
-                        }
-                    }
-                }
-            }
-        }
-    }
-    
-    my %MethodTypeIndex = ();
-    
-    foreach my $Method (sort keys(%CompatProblems))
-    {
-        my @Kinds = sort keys(%{$CompatProblems{$Method}});
-        foreach my $Kind (@Kinds)
-        {
-            if(my $Severity = $TypeProblems_Kind{$Level}{$Kind})
-            {
-                my @Locs = sort {length($a)<=>length($b)} sort keys(%{$CompatProblems{$Method}{$Kind}});
-                foreach my $Location (@Locs)
-                {
-                    my $Type_Name = $CompatProblems{$Method}{$Kind}{$Location}{"Type_Name"};
-                    my $Target = $CompatProblems{$Method}{$Kind}{$Location}{"Target"};
-                    
-                    if(defined $MethodTypeIndex{$Method}{$Type_Name}{$Kind}{$Target})
-                    { # one location for one type and target
-                        next;
-                    }
-                    $MethodTypeIndex{$Method}{$Type_Name}{$Kind}{$Target} = 1;
-                    $TypeChanges{$Level}{$Type_Name}{$Kind}{$Location} = $CompatProblems{$Method}{$Kind}{$Location};
-                    
-                    if(($Severity ne "Low" or $StrictCompat)
-                    and $Severity ne "Safe")
-                    {
-                        if(my $Sev = $TotalAffected{$Level}{$Method})
-                        {
-                            if($Severity_Val{$Severity}>$Severity_Val{$Sev}) {
-                                $TotalAffected{$Level}{$Method} = $Severity;
-                            }
-                        }
-                        else {
-                            $TotalAffected{$Level}{$Method} = $Severity;
-                        }
-                    }
-                }
-            }
-        }
-    }
-    
-    %MethodTypeIndex = (); # clear memory
-    
-    
-    $T_Problems_High = get_TypeProblems_Count("High", $Level);
-    $T_Problems_Medium = get_TypeProblems_Count("Medium", $Level);
-    $T_Problems_Low = get_TypeProblems_Count("Low", $Level);
-    $T_Other = get_TypeProblems_Count("Safe", $Level);
-    
-    my $SCount = keys(%CheckedMethods)-$Added;
-    if($SCount)
-    {
-        my %Weight = (
-            "High" => 100,
-            "Medium" => 50,
-            "Low" => 25
-        );
-        foreach (keys(%{$TotalAffected{$Level}})) {
-            $RESULT{$Level}{"Affected"}+=$Weight{$TotalAffected{$Level}{$_}};
-        }
-        $RESULT{$Level}{"Affected"} = $RESULT{$Level}{"Affected"}/$SCount;
-    }
-    else {
-        $RESULT{$Level}{"Affected"} = 0;
-    }
-    $RESULT{$Level}{"Affected"} = show_number($RESULT{$Level}{"Affected"});
-    if($RESULT{$Level}{"Affected"}>=100) {
-        $RESULT{$Level}{"Affected"} = 100;
-    }
-    
-    my ($TestInfo, $TestResults, $Problem_Summary) = ();
-    
-    # test info
-    $TestInfo .= "<h2>Test Info</h2><hr/>\n";
-    $TestInfo .= "<table class='summary'>\n";
-    $TestInfo .= "<tr><th>Library Name</th><td>$TargetTitle</td></tr>\n";
-    $TestInfo .= "<tr><th>Version #1</th><td>".$Descriptor{1}{"Version"}."</td></tr>\n";
-    $TestInfo .= "<tr><th>Version #2</th><td>".$Descriptor{2}{"Version"}."</td></tr>\n";
-    
-    if($JoinReport)
-    {
-        if($Level eq "Binary") {
-            $TestInfo .= "<tr><th>Subject</th><td width='150px'>Binary Compatibility</td></tr>\n"; # Run-time
-        }
-        if($Level eq "Source") {
-            $TestInfo .= "<tr><th>Subject</th><td width='150px'>Source Compatibility</td></tr>\n"; # Build-time
-        }
-    }
-    $TestInfo .= "</table>\n";
-    
-    # test results
-    $TestResults .= "<h2>Test Results</h2><hr/>";
-    $TestResults .= "<table class='summary'>";
-    
-    my $Checked_Archives_Link = "0";
-    $Checked_Archives_Link = "<a href='#Checked_Archives' style='color:Blue;'>".keys(%{$LibArchives{1}})."</a>" if(keys(%{$LibArchives{1}})>0);
-    
-    $TestResults .= "<tr><th>Total JARs</th><td>$Checked_Archives_Link</td></tr>\n";
-    $TestResults .= "<tr><th>Total Methods / Classes</th><td>".keys(%CheckedMethods)." / ".keys(%CheckedTypes)."</td></tr>\n";
-    
-    $RESULT{$Level}{"Problems"} += $Removed+$M_Problems_High+$T_Problems_High+$T_Problems_Medium+$M_Problems_Medium;
-    if($StrictCompat) {
-        $RESULT{$Level}{"Problems"}+=$T_Problems_Low+$M_Problems_Low;
-    }
-    else {
-        $RESULT{$Level}{"Warnings"}+=$T_Problems_Low+$M_Problems_Low;
-    }
-    
-    my $META_DATA = "kind:".lc($Level).";";
-    $META_DATA .= $RESULT{$Level}{"Problems"}?"verdict:incompatible;":"verdict:compatible;";
-    $TestResults .= "<tr><th>Compatibility</th>\n";
-    
-    my $BC_Rate = show_number(100 - $RESULT{$Level}{"Affected"});
-    
-    if($RESULT{$Level}{"Problems"})
-    {
-        my $Cl = "incompatible";
-        if($BC_Rate>=90) {
-            $Cl = "warning";
-        }
-        elsif($BC_Rate>=80) {
-            $Cl = "almost_compatible";
-        }
-        
-        $TestResults .= "<td class=\'$Cl\'>".$BC_Rate."%</td>\n";
-    }
-    else
-    {
-        $TestResults .= "<td class=\'compatible\'>100%</td>\n";
-    }
-    
-    $TestResults .= "</tr>\n";
-    $TestResults .= "</table>\n";
-    
-    $META_DATA .= "affected:".$RESULT{$Level}{"Affected"}.";";# in percents
-    
-    # Problem Summary
-    $Problem_Summary .= "<h2>Problem Summary</h2><hr/>";
-    $Problem_Summary .= "<table class='summary'>";
-    $Problem_Summary .= "<tr><th></th><th style='text-align:center;'>Severity</th><th style='text-align:center;'>Count</th></tr>";
-    
-    my $Added_Link = "0";
-    if($Added>0)
-    {
-        if($ShortMode) {
-            $Added_Link = $Added;
-        }
-        else
-        {
-            if($JoinReport) {
-                $Added_Link = "<a href='#".$Level."_Added' style='color:Blue;'>$Added</a>";
-            }
-            else {
-                $Added_Link = "<a href='#Added' style='color:Blue;'>$Added</a>";
-            }
-        }
-    }
-    $META_DATA .= "added:$Added;";
-    $Problem_Summary .= "<tr><th>Added Methods</th><td>-</td><td".getStyle("M", "Added", $Added).">$Added_Link</td></tr>";
-    
-    my $Removed_Link = "0";
-    if($Removed>0)
-    {
-        if($ShortMode) {
-            $Removed_Link = $Removed;
-        }
-        else
-        {
-            if($JoinReport) {
-                $Removed_Link = "<a href='#".$Level."_Removed' style='color:Blue;'>$Removed</a>"
-            }
-            else {
-                $Removed_Link = "<a href='#Removed' style='color:Blue;'>$Removed</a>"
-            }
-        }
-    }
-    $META_DATA .= "removed:$Removed;";
-    $Problem_Summary .= "<tr><th>Removed Methods</th>";
-    $Problem_Summary .= "<td>High</td><td".getStyle("M", "Removed", $Removed).">$Removed_Link</td></tr>";
-    
-    my $TH_Link = "0";
-    $TH_Link = "<a href='#".get_Anchor("Type", $Level, "High")."' style='color:Blue;'>$T_Problems_High</a>" if($T_Problems_High>0);
-    $META_DATA .= "type_problems_high:$T_Problems_High;";
-    $Problem_Summary .= "<tr><th rowspan='3'>Problems with<br/>Data Types</th>";
-    $Problem_Summary .= "<td>High</td><td".getStyle("T", "High", $T_Problems_High).">$TH_Link</td></tr>";
-    
-    my $TM_Link = "0";
-    $TM_Link = "<a href='#".get_Anchor("Type", $Level, "Medium")."' style='color:Blue;'>$T_Problems_Medium</a>" if($T_Problems_Medium>0);
-    $META_DATA .= "type_problems_medium:$T_Problems_Medium;";
-    $Problem_Summary .= "<tr><td>Medium</td><td".getStyle("T", "Medium", $T_Problems_Medium).">$TM_Link</td></tr>";
-    
-    my $TL_Link = "0";
-    $TL_Link = "<a href='#".get_Anchor("Type", $Level, "Low")."' style='color:Blue;'>$T_Problems_Low</a>" if($T_Problems_Low>0);
-    $META_DATA .= "type_problems_low:$T_Problems_Low;";
-    $Problem_Summary .= "<tr><td>Low</td><td".getStyle("T", "Low", $T_Problems_Low).">$TL_Link</td></tr>";
-    
-    my $MH_Link = "0";
-    $MH_Link = "<a href='#".get_Anchor("Method", $Level, "High")."' style='color:Blue;'>$M_Problems_High</a>" if($M_Problems_High>0);
-    $META_DATA .= "method_problems_high:$M_Problems_High;";
-    $Problem_Summary .= "<tr><th rowspan='3'>Problems with<br/>Methods</th>";
-    $Problem_Summary .= "<td>High</td><td".getStyle("M", "High", $M_Problems_High).">$MH_Link</td></tr>";
-    
-    my $MM_Link = "0";
-    $MM_Link = "<a href='#".get_Anchor("Method", $Level, "Medium")."' style='color:Blue;'>$M_Problems_Medium</a>" if($M_Problems_Medium>0);
-    $META_DATA .= "method_problems_medium:$M_Problems_Medium;";
-    $Problem_Summary .= "<tr><td>Medium</td><td".getStyle("M", "Medium", $M_Problems_Medium).">$MM_Link</td></tr>";
-    
-    my $ML_Link = "0";
-    $ML_Link = "<a href='#".get_Anchor("Method", $Level, "Low")."' style='color:Blue;'>$M_Problems_Low</a>" if($M_Problems_Low>0);
-    $META_DATA .= "method_problems_low:$M_Problems_Low;";
-    $Problem_Summary .= "<tr><td>Low</td><td".getStyle("M", "Low", $M_Problems_Low).">$ML_Link</td></tr>";
-    
-    # Safe Changes
-    if($T_Other)
-    {
-        my $TS_Link = "<a href='#".get_Anchor("Type", $Level, "Safe")."' style='color:Blue;'>$T_Other</a>";
-        $Problem_Summary .= "<tr><th>Other Changes<br/>in Data Types</th><td>-</td><td".getStyle("T", "Safe", $T_Other).">$TS_Link</td></tr>\n";
-    }
-    
-    if($M_Other)
-    {
-        my $MS_Link = "<a href='#".get_Anchor("Method", $Level, "Safe")."' style='color:Blue;'>$M_Other</a>";
-        $Problem_Summary .= "<tr><th>Other Changes<br/>in Methods</th><td>-</td><td".getStyle("M", "Safe", $M_Other).">$MS_Link</td></tr>\n";
-    }
-    $META_DATA .= "checked_methods:".keys(%CheckedMethods).";";
-    $META_DATA .= "checked_types:".keys(%CheckedTypes).";";
-    $META_DATA .= "tool_version:$TOOL_VERSION";
-    $Problem_Summary .= "</table>\n";
-    return ($TestInfo.$TestResults.$Problem_Summary, $META_DATA);
-}
-
-sub getStyle($$$)
-{
-    my ($Subj, $Act, $Num) = @_;
-    my %Style = (
-        "Added"=>"new",
-        "Removed"=>"failed",
-        "Safe"=>"passed",
-        "Low"=>"warning",
-        "Medium"=>"failed",
-        "High"=>"failed"
-    );
-    
-    if($Num>0) {
-        return " class='".$Style{$Act}."'";
-    }
-    
-    return "";
-}
-
-sub get_Anchor($$$)
-{
-    my ($Kind, $Level, $Severity) = @_;
-    if($JoinReport)
-    {
-        if($Severity eq "Safe") {
-            return "Other_".$Level."_Changes_In_".$Kind."s";
-        }
-        else {
-            return $Kind."_".$Level."_Problems_".$Severity;
-        }
-    }
-    else
-    {
-        if($Severity eq "Safe") {
-            return "Other_Changes_In_".$Kind."s";
-        }
-        else {
-            return $Kind."_Problems_".$Severity;
-        }
-    }
-}
-
-sub get_Report_Added($)
-{
-    if($ShortMode) {
-        return "";
-    }
-    
-    my $Level = $_[0];
-    my ($ADDED_METHODS, %MethodAddedInArchiveClass);
-    foreach my $Method (sort keys(%CompatProblems))
-    {
-        foreach my $Kind (sort keys(%{$CompatProblems{$Method}}))
-        {
-            if($Kind eq "Added_Method")
-            {
-                my $ArchiveName = $MethodInfo{2}{$Method}{"Archive"};
-                my $ClassName = get_ShortName($MethodInfo{2}{$Method}{"Class"}, 2);
-                if($Level eq "Source")
-                {
-                    if($ChangedReturnFromVoid{$Method}) {
-                        next;
-                    }
-                }
-                $MethodAddedInArchiveClass{$ArchiveName}{$ClassName}{$Method} = 1;
-            }
-        }
-    }
-    my $Added_Number = 0;
-    foreach my $ArchiveName (sort {lc($a) cmp lc($b)} keys(%MethodAddedInArchiveClass))
-    {
-        foreach my $ClassName (sort {lc($a) cmp lc($b)} keys(%{$MethodAddedInArchiveClass{$ArchiveName}}))
-        {
-            my %NameSpace_Method = ();
-            foreach my $Method (keys(%{$MethodAddedInArchiveClass{$ArchiveName}{$ClassName}})) {
-                $NameSpace_Method{$MethodInfo{2}{$Method}{"Package"}}{$Method} = 1;
-            }
-            
-            my $ShowClass = $ClassName;
-            $ShowClass=~s/<.*>//g;
-            
-            foreach my $NameSpace (sort keys(%NameSpace_Method))
-            {
-                $ADDED_METHODS .= "<span class='jar'>$ArchiveName</span>, <span class='cname'>".htmlSpecChars($ShowClass).".class</span><br/>\n";
-                
-                if($NameSpace) {
-                    $ADDED_METHODS .= "<span class='pkg_t'>package</span> <span class='pkg'>$NameSpace</span><br/>\n";
-                }
-                
-                if($Compact) {
-                    $ADDED_METHODS .= "<div class='symbols'>";
-                }
-                
-                my @SortedMethods = sort {lc($MethodInfo{2}{$a}{"Signature"}) cmp lc($MethodInfo{2}{$b}{"Signature"})} keys(%{$NameSpace_Method{$NameSpace}});
-                foreach my $Method (@SortedMethods)
-                {
-                    $Added_Number += 1;
-                    
-                    my $Signature = undef;
-                    
-                    if($Compact) {
-                        $Signature = get_Signature($Method, 2, "Full|HTML|Simple");
-                    }
-                    else {
-                        $Signature = highLight_Signature_Italic_Color($Method, 2);
-                    }
-                    
-                    if($NameSpace) {
-                        $Signature=~s/(\W|\A)\Q$NameSpace\E\.(\w)/$1$2/g;
-                    }
-                    
-                    if($Compact) {
-                        $ADDED_METHODS .= " ".$Signature."<br/>\n";
-                    }
-                    else {
-                        $ADDED_METHODS .= insertIDs($ContentSpanStart.$Signature.$ContentSpanEnd."<br/>\n".$ContentDivStart."<span class='mngl'>[mangled: <b>".htmlSpecChars($Method)."</b>]</span><br/><br/>".$ContentDivEnd."\n");
-                    }
-                }
-                
-                if($Compact) {
-                    $ADDED_METHODS .= "</div>";
-                }
-                
-                $ADDED_METHODS .= "<br/>\n";
-            }
-            
-        }
-    }
-    if($ADDED_METHODS)
-    {
-        my $Anchor = "<a name='Added'></a>";
-        if($JoinReport) {
-            $Anchor = "<a name='".$Level."_Added'></a>";
-        }
-        if($OldStyle) {
-            $ADDED_METHODS = "<h2>Added Methods ($Added_Number)</h2><hr/>\n".$ADDED_METHODS;
-        }
-        else {
-            $ADDED_METHODS = "<h2>Added Methods <span".getStyle("M", "Added", $Added_Number)."> $Added_Number </span></h2><hr/>\n".$ADDED_METHODS;
-        }
-        $ADDED_METHODS = $Anchor.$ADDED_METHODS.$TOP_REF."<br/>\n";
-    }
-    return $ADDED_METHODS;
-}
-
-sub get_Report_Removed($)
-{
-    if($ShortMode) {
-        return "";
-    }
-    
-    my $Level = $_[0];
-    my ($REMOVED_METHODS, %MethodRemovedFromArchiveClass);
-    foreach my $Method (sort keys(%CompatProblems))
-    {
-        foreach my $Kind (sort keys(%{$CompatProblems{$Method}}))
-        {
-            if($Kind eq "Removed_Method")
-            {
-                if($Level eq "Source")
-                {
-                    if($ChangedReturnFromVoid{$Method}) {
-                        next;
-                    }
-                }
-                my $ArchiveName = $MethodInfo{1}{$Method}{"Archive"};
-                my $ClassName = get_ShortName($MethodInfo{1}{$Method}{"Class"}, 1);
-                $MethodRemovedFromArchiveClass{$ArchiveName}{$ClassName}{$Method} = 1;
-            }
-        }
-    }
-    my $Removed_Number = 0;
-    foreach my $ArchiveName (sort {lc($a) cmp lc($b)} keys(%MethodRemovedFromArchiveClass))
-    {
-        foreach my $ClassName (sort {lc($a) cmp lc($b)} keys(%{$MethodRemovedFromArchiveClass{$ArchiveName}}))
-        {
-            my %NameSpace_Method = ();
-            foreach my $Method (keys(%{$MethodRemovedFromArchiveClass{$ArchiveName}{$ClassName}}))
-            {
-                $NameSpace_Method{$MethodInfo{1}{$Method}{"Package"}}{$Method} = 1;
-            }
-            
-            my $ShowClass = $ClassName;
-            $ShowClass=~s/<.*>//g;
-            
-            foreach my $NameSpace (sort keys(%NameSpace_Method))
-            {
-                $REMOVED_METHODS .= "<span class='jar'>$ArchiveName</span>, <span class='cname'>".htmlSpecChars($ShowClass).".class</span><br/>\n";
-                
-                if($NameSpace) {
-                    $REMOVED_METHODS .= "<span class='pkg_t'>package</span> <span class='pkg'>$NameSpace</span><br/>\n";
-                }
-                
-                if($Compact) {
-                    $REMOVED_METHODS .= "<div class='symbols'>";
-                }
-                
-                my @SortedMethods = sort {lc($MethodInfo{1}{$a}{"Signature"}) cmp lc($MethodInfo{1}{$b}{"Signature"})} keys(%{$NameSpace_Method{$NameSpace}});
-                foreach my $Method (@SortedMethods)
-                {
-                    $Removed_Number += 1;
-                    
-                    my $Signature = undef;
-                    
-                    if($Compact) {
-                        $Signature = get_Signature($Method, 1, "Full|HTML|Simple");
-                    }
-                    else {
-                        $Signature = highLight_Signature_Italic_Color($Method, 1);
-                    }
-                    
-                    if($NameSpace) {
-                        $Signature=~s/(\W|\A)\Q$NameSpace\E\.(\w)/$1$2/g;
-                    }
-                    
-                    if($Compact) {
-                        $REMOVED_METHODS .= " ".$Signature."<br/>\n";
-                    }
-                    else {
-                        $REMOVED_METHODS .= insertIDs($ContentSpanStart.$Signature.$ContentSpanEnd."<br/>\n".$ContentDivStart."<span class='mngl'>[mangled: <b>".htmlSpecChars($Method)."</b>]</span><br/><br/>".$ContentDivEnd."\n");
-                    }
-                }
-                
-                if($Compact) {
-                    $REMOVED_METHODS .= "</div>";
-                }
-                
-                $REMOVED_METHODS .= "<br/>\n";
-            }
-        }
-    }
-    if($REMOVED_METHODS)
-    {
-        my $Anchor = "<a name='Removed'></a><a name='Withdrawn'></a>";
-        if($JoinReport) {
-            $Anchor = "<a name='".$Level."_Removed'></a><a name='".$Level."_Withdrawn'></a>";
-        }
-        if($OldStyle) {
-            $REMOVED_METHODS = "<h2>Removed Methods ($Removed_Number)</h2><hr/>\n".$REMOVED_METHODS;
-        }
-        else {
-            $REMOVED_METHODS = "<h2>Removed Methods <span".getStyle("M", "Removed", $Removed_Number)."> $Removed_Number </span></h2><hr/>\n".$REMOVED_METHODS;
-        }
-        $REMOVED_METHODS = $Anchor.$REMOVED_METHODS.$TOP_REF."<br/>\n";
-    }
-    return $REMOVED_METHODS;
-}
-
-sub get_Report_MethodProblems($$)
-{
-    my ($TargetSeverity, $Level) = @_;
-    my $METHOD_PROBLEMS = "";
-    my (%ReportMap, %MethodChanges) = ();
-    
-    foreach my $Method (sort keys(%CompatProblems))
-    {
-        my $ArchiveName = $MethodInfo{1}{$Method}{"Archive"};
-        my $ClassName = get_ShortName($MethodInfo{1}{$Method}{"Class"}, 1);
-        
-        foreach my $Kind (sort keys(%{$CompatProblems{$Method}}))
-        {
-            if($Kind eq "Added_Method"
-            or $Kind eq "Removed_Method") {
-                next;
-            }
-            
-            if(my $Severity = $MethodProblems_Kind{$Level}{$Kind})
-            {
-                if($Severity ne $TargetSeverity) {
-                    next;
-                }
-                
-                $MethodChanges{$Method}{$Kind} = $CompatProblems{$Method}{$Kind};
-                $ReportMap{$ArchiveName}{$ClassName}{$Method} = 1;
-            }
-        }
-    }
-    my $ProblemsNum = 0;
-    foreach my $ArchiveName (sort {lc($a) cmp lc($b)} keys(%ReportMap))
-    {
-        foreach my $ClassName (sort {lc($a) cmp lc($b)} keys(%{$ReportMap{$ArchiveName}}))
-        {
-            my %NameSpace_Method = ();
-            foreach my $Method (keys(%{$ReportMap{$ArchiveName}{$ClassName}})) {
-                $NameSpace_Method{$MethodInfo{1}{$Method}{"Package"}}{$Method} = 1;
-            }
-            
-            my $ShowClass = $ClassName;
-            $ShowClass=~s/<.*>//g;
-            
-            foreach my $NameSpace (sort keys(%NameSpace_Method))
-            {
-                $METHOD_PROBLEMS .= "<span class='jar'>$ArchiveName</span>, <span class='cname'>".htmlSpecChars($ShowClass).".class</span><br/>\n";
-                if($NameSpace) {
-                    $METHOD_PROBLEMS .= "<span class='pkg_t'>package</span> <span class='pkg'>$NameSpace</span><br/>\n";
-                }
-                
-                my @SortedMethods = sort {lc($MethodInfo{1}{$a}{"Signature"}) cmp lc($MethodInfo{1}{$b}{"Signature"})} keys(%{$NameSpace_Method{$NameSpace}});
-                foreach my $Method (@SortedMethods)
-                {
-                    my $ShortSignature = get_Signature($Method, 1, "Short");
-                    my $ClassName_Full = get_TypeName($MethodInfo{1}{$Method}{"Class"}, 1);
-                    my $METHOD_REPORT = "";
-                    my $ProblemNum = 1;
-                    foreach my $Kind (sort keys(%{$MethodChanges{$Method}}))
-                    {
-                        foreach my $Location (sort keys(%{$MethodChanges{$Method}{$Kind}}))
-                        {
-                            my %Problems = %{$MethodChanges{$Method}{$Kind}{$Location}};
-                            
-                            my $Target = $Problems{"Target"};
-                            
-                            my ($Change, $Effect) = ("", "");
-                            my $Old_Value = htmlSpecChars($Problems{"Old_Value"});
-                            my $New_Value = htmlSpecChars($Problems{"New_Value"});
-                            
-                            if($Kind eq "Method_Became_Static")
-                            {
-                                $Change = "Method became <b>static</b>.\n";
-                                $Effect = "A client program may be interrupted by <b>NoSuchMethodError</b> exception.";
-                            }
-                            elsif($Kind eq "Method_Became_NonStatic")
-                            {
-                                $Change = "Method became <b>non-static</b>.\n";
-                                if($Level eq "Binary") {
-                                    $Effect = "A client program may be interrupted by <b>NoSuchMethodError</b> exception.";
-                                }
-                                else {
-                                    $Effect = "Recompilation of a client program may be terminated with the message: non-static method ".htmlSpecChars($ShortSignature)." cannot be referenced from a static context.";
-                                }
-                            }
-                            elsif($Kind eq "Changed_Method_Return_From_Void")
-                            {
-                                $Change = "Return value type has been changed from <b>void</b> to <b>".htmlSpecChars($New_Value)."</b>.\n";
-                                $Effect = "This method has been removed because the return type is part of the method signature.";
-                            }
-                            elsif($Kind eq "Static_Method_Became_Final")
-                            {# Source Only
-                                $Change = "Method became <b>final</b>.\n";
-                                $Effect = "Recompilation of a client program may be terminated with the message: ".htmlSpecChars($ShortSignature)." in client class C cannot override ".htmlSpecChars($ShortSignature)." in ".htmlSpecChars($ClassName_Full)."; overridden method is final.";
-                            }
-                            elsif($Kind eq "NonStatic_Method_Became_Final")
-                            {
-                                $Change = "Method became <b>final</b>.\n";
-                                if($Level eq "Binary") {
-                                    $Effect = "A client program trying to reimplement this method may be interrupted by <b>VerifyError</b> exception.";
-                                }
-                                else {
-                                    $Effect = "Recompilation of a client program may be terminated with the message: ".htmlSpecChars($ShortSignature)." in client class C cannot override ".htmlSpecChars($ShortSignature)." in ".htmlSpecChars($ClassName_Full)."; overridden method is final.";
-                                }
-                            }
-                            elsif($Kind eq "Method_Became_Abstract")
-                            {
-                                $Change = "Method became <b>abstract</b>.\n";
-                                if($Level eq "Binary") {
-                                    $Effect = "A client program trying to create an instance of the method's class may be interrupted by <b>InstantiationError</b> exception.";
-                                }
-                                else {
-                                    $Effect = "Recompilation of a client program may be terminated with the message: A client class C is not abstract and does not override abstract method ".htmlSpecChars($ShortSignature)." in ".htmlSpecChars($ClassName_Full).".";
-                                }
-                            }
-                            elsif($Kind eq "Method_Became_NonAbstract")
-                            {
-                                $Change = "Method became <b>non-abstract</b>.\n";
-                                if($Level eq "Binary") {
-                                    $Effect = "A client program may change behavior.";
-                                }
-                                else {
-                                    $Effect = "No effect.";
-                                }
-                            }
-                            elsif($Kind eq "Method_Became_Default")
-                            {
-                                $Change = "Method became <b>default</b>.\n";
-                                if($Level eq "Binary") {
-                                    $Effect = "No effect.";
-                                }
-                                else {
-                                    $Effect = "No effect.";
-                                }
-                            }
-                            elsif($Kind eq "Method_Became_NonDefault")
-                            {
-                                $Change = "Method became <b>non-default</b>.\n";
-                                if($Level eq "Binary") {
-                                    $Effect = "A client program trying to create an instance of a class may be interrupted by <b>AbstractMethodError</b> exception.";
-                                }
-                                else {
-                                    $Effect = "Recompilation of a client program may be terminated with the message: A client class C is not abstract and does not override abstract method ".htmlSpecChars($ShortSignature)." in ".htmlSpecChars($ClassName_Full).".";
-                                }
-                            }
-                            elsif($Kind eq "Method_Became_Synchronized")
-                            {
-                                $Change = "Method became <b>synchronized</b>.\n";
-                                $Effect = "A multi-threaded client program may change behavior.";
-                            }
-                            elsif($Kind eq "Method_Became_NonSynchronized")
-                            {
-                                $Change = "Method became <b>non-synchronized</b>.\n";
-                                $Effect = "A multi-threaded client program may change behavior.";
-                            }
-                            elsif($Kind eq "Changed_Method_Access")
-                            {
-                                $Change = "Access level has been changed from <span class='nowrap'><b>".htmlSpecChars($Old_Value)."</b></span> to <span class='nowrap'><b>".htmlSpecChars($New_Value)."</b></span>.";
-                                if($Level eq "Binary") {
-                                    $Effect = "A client program may be interrupted by <b>IllegalAccessError</b> exception.";
-                                }
-                                else {
-                                    $Effect = "Recompilation of a client program may be terminated with the message: ".htmlSpecChars($ShortSignature)." has $New_Value access in ".htmlSpecChars($ClassName_Full).".";
-                                }
-                            }
-                            elsif($Kind eq "Abstract_Method_Added_Checked_Exception")
-                            {# Source Only
-                                $Change = "Added <b>".htmlSpecChars($Target)."</b> exception thrown.\n";
-                                $Effect = "Recompilation of a client program may be terminated with the message: unreported exception ".htmlSpecChars($Target)." must be caught or declared to be thrown.";
-                            }
-                            elsif($Kind eq "NonAbstract_Method_Added_Checked_Exception")
-                            {
-                                $Change = "Added <b>".htmlSpecChars($Target)."</b> exception thrown.\n";
-                                if($Level eq "Binary") {
-                                    $Effect = "A client program may be interrupted by added exception.";
-                                }
-                                else {
-                                    $Effect = "Recompilation of a client program may be terminated with the message: unreported exception ".htmlSpecChars($Target)." must be caught or declared to be thrown.";
-                                }
-                            }
-                            elsif($Kind eq "Abstract_Method_Removed_Checked_Exception")
-                            {# Source Only
-                                $Change = "Removed <b>".htmlSpecChars($Target)."</b> exception thrown.\n";
-                                $Effect = "Recompilation of a client program may be terminated with the message: cannot override ".htmlSpecChars($ShortSignature)." in ".htmlSpecChars($ClassName_Full)."; overridden method does not throw ".htmlSpecChars($Target).".";
-                            }
-                            elsif($Kind eq "NonAbstract_Method_Removed_Checked_Exception")
-                            {
-                                $Change = "Removed <b>".htmlSpecChars($Target)."</b> exception thrown.\n";
-                                if($Level eq "Binary") {
-                                    $Effect = "A client program may change behavior because the removed exception will not be thrown any more and client will not catch and handle it.";
-                                }
-                                else {
-                                    $Effect = "Recompilation of a client program may be terminated with the message: cannot override ".htmlSpecChars($ShortSignature)." in ".htmlSpecChars($ClassName_Full)."; overridden method does not throw ".htmlSpecChars($Target).".";
-                                }
-                            }
-                            elsif($Kind eq "Added_Unchecked_Exception")
-                            {# Binary Only
-                                $Change = "Added <b>".htmlSpecChars($Target)."</b> exception thrown.\n";
-                                $Effect = "A client program may be interrupted by added exception.";
-                            }
-                            elsif($Kind eq "Removed_Unchecked_Exception")
-                            {# Binary Only
-                                $Change = "Removed <b>".htmlSpecChars($Target)."</b> exception thrown.\n";
-                                $Effect = "A client program may change behavior because the removed exception will not be thrown any more and client will not catch and handle it.";
-                            }
-                            if($Change)
-                            {
-                                $METHOD_REPORT .= "<tr><th>$ProblemNum</th><td>".$Change."</td><td>".$Effect."</td></tr>\n";
-                                $ProblemNum += 1;
-                                $ProblemsNum += 1;
-                            }
-                        }
-                    }
-                    $ProblemNum -= 1;
-                    if($METHOD_REPORT)
-                    {
-                        my $ShowMethod = highLight_Signature_Italic_Color($Method, 1);
-                        if($NameSpace)
-                        {
-                            $METHOD_REPORT = cut_Namespace($METHOD_REPORT, $NameSpace);
-                            $ShowMethod = cut_Namespace($ShowMethod, $NameSpace);
-                        }
-                        
-                        $METHOD_PROBLEMS .= $ContentSpanStart."<span class='ext'>[+]</span> ".$ShowMethod;
-                        if($OldStyle) {
-                            $METHOD_PROBLEMS .= " ($ProblemNum)";
-                        }
-                        else {
-                            $METHOD_PROBLEMS .= " <span".getStyle("M", $TargetSeverity, $ProblemNum)."> $ProblemNum </span>";
-                        }
-                        $METHOD_PROBLEMS .= $ContentSpanEnd."<br/>\n";
-                        $METHOD_PROBLEMS .= $ContentDivStart;
-                        
-                        if(not $Compact) {
-                            $METHOD_PROBLEMS .= "<span class='mngl'>   [mangled: <b>".htmlSpecChars($Method)."</b>]</span><br/>\n";
-                        }
-                        
-                        $METHOD_PROBLEMS .= "<table class='ptable'><tr><th width='2%'></th><th width='47%'>Change</th><th>Effect</th></tr>$METHOD_REPORT</table><br/>$ContentDivEnd\n";
-                        
-                    }
-                }
-                
-                $METHOD_PROBLEMS .= "<br/>";
-            }
-        }
-    }
-    if($METHOD_PROBLEMS)
-    {
-        $METHOD_PROBLEMS = insertIDs($METHOD_PROBLEMS);
-        
-        my $Title = "Problems with Methods, $TargetSeverity Severity";
-        if($TargetSeverity eq "Safe")
-        { # Safe Changes
-            $Title = "Other Changes in Methods";
-        }
-        if($OldStyle) {
-            $METHOD_PROBLEMS = "<h2>$Title ($ProblemsNum)</h2><hr/>\n".$METHOD_PROBLEMS;
-        }
-        else {
-            $METHOD_PROBLEMS = "<h2>$Title <span".getStyle("M", $TargetSeverity, $ProblemsNum)."> $ProblemsNum </span></h2><hr/>\n".$METHOD_PROBLEMS;
-        }
-        $METHOD_PROBLEMS = "<a name='".get_Anchor("Method", $Level, $TargetSeverity)."'></a>\n".$METHOD_PROBLEMS;
-        $METHOD_PROBLEMS .= $TOP_REF."<br/>\n";
-    }
-    return $METHOD_PROBLEMS;
-}
-
-sub get_Report_TypeProblems($$)
-{
-    my ($TargetSeverity, $Level) = @_;
-    my $TYPE_PROBLEMS = "";
-    my %ReportMap = ();
-    my %TypeChanges_Sev = ();
-    
-    foreach my $TypeName (keys(%{$TypeChanges{$Level}}))
-    {
-        my $ArchiveName = $TypeInfo{1}{$TName_Tid{1}{$TypeName}}{"Archive"};
-        
-        foreach my $Kind (keys(%{$TypeChanges{$Level}{$TypeName}}))
-        {
-            my $Severity = $TypeProblems_Kind{$Level}{$Kind};
-            
-            if($Severity ne $TargetSeverity) {
-                next;
-            }
-            
-            foreach my $Location (keys(%{$TypeChanges{$Level}{$TypeName}{$Kind}}))
-            {
-                $ReportMap{$ArchiveName}{$TypeName} = 1;
-                $TypeChanges_Sev{$TypeName}{$Kind}{$Location} = $TypeChanges{$Level}{$TypeName}{$Kind}{$Location};
-            }
-        }
-    }
-    
-    my $ProblemsNum = 0;
-    foreach my $ArchiveName (sort {lc($a) cmp lc($b)} keys(%ReportMap))
-    {
-        my ($HEADER_REPORT, %NameSpace_Type) = ();
-        foreach my $TypeName (keys(%{$ReportMap{$ArchiveName}}))
-        {
-            $NameSpace_Type{$TypeInfo{1}{$TName_Tid{1}{$TypeName}}{"Package"}}{$TypeName} = 1;
-        }
-        foreach my $NameSpace (sort keys(%NameSpace_Type))
-        {
-            $TYPE_PROBLEMS .= "<span class='jar'>$ArchiveName</span><br/>\n";
-            if($NameSpace) {
-                $TYPE_PROBLEMS .= "<span class='pkg_t'>package</span> <span class='pkg'>".$NameSpace."</span><br/>\n";
-            }
-            
-            my @SortedTypes = sort {lc($a) cmp lc($b)} keys(%{$NameSpace_Type{$NameSpace}});
-            foreach my $TypeName (@SortedTypes)
-            {
-                my $TypeId = $TName_Tid{1}{$TypeName};
-                my $ProblemNum = 1;
-                my $TYPE_REPORT = "";
-                my (%Kinds_Locations, %Kinds_Target) = ();
-                foreach my $Kind (sort keys(%{$TypeChanges_Sev{$TypeName}}))
-                {
-                    foreach my $Location (sort keys(%{$TypeChanges_Sev{$TypeName}{$Kind}}))
-                    {
-                        $Kinds_Locations{$Kind}{$Location} = 1;
-                        
-                        my $Target = $TypeChanges_Sev{$TypeName}{$Kind}{$Location}{"Target"};
-                        if($Kinds_Target{$Kind}{$Target}) {
-                            next;
-                        }
-                        $Kinds_Target{$Kind}{$Target} = 1;
-                        
-                        my ($Change, $Effect) = ("", "");
-                        my %Problems = %{$TypeChanges_Sev{$TypeName}{$Kind}{$Location}};
-                        
-                        my $Old_Value = $Problems{"Old_Value"};
-                        my $New_Value = $Problems{"New_Value"};
-                        my $Field_Type = $Problems{"Field_Type"};
-                        my $Field_Value = $Problems{"Field_Value"};
-                        my $Type_Type = $Problems{"Type_Type"};
-                        
-                        if($Kind eq "NonAbstract_Class_Added_Abstract_Method")
-                        {
-                            $Change = "Abstract method ".black_Name($Target, 2)." has been added to this $Type_Type.";
-                            if($Level eq "Binary") {
-                                $Effect = "This class became <b>abstract</b> and a client program may be interrupted by <b>InstantiationError</b> exception.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method <b>".htmlSpecChars(get_Signature($Target, 2, "Short"))."</b> in <b>".htmlSpecChars(get_TypeName($MethodInfo{2}{$Target}{"Class"}, 2))."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Abstract_Class_Added_Abstract_Method")
-                        {
-                            $Change = "Abstract method ".black_Name($Target, 2)." has been added to this $Type_Type.";
-                            if($Level eq "Binary") {
-                                $Effect = "No effect.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method <b>".htmlSpecChars(get_Signature($Target, 2, "Short"))."</b> in <b>".htmlSpecChars(get_TypeName($MethodInfo{2}{$Target}{"Class"}, 2))."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Abstract_Class_Added_Abstract_Method_Invoked_By_Others")
-                        {
-                            $Change = "Abstract method ".black_Name($Target, 2)." has been added to this $Type_Type.";
-                            if($Level eq "Binary") {
-                                $Effect = "A client program may be interrupted by <b>AbstractMethodError</b> exception. Added abstract method is called in 2nd library version by the method ".black_Name($Problems{"InvokedBy"}, 1)." and may not be implemented by old clients.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method <b>".htmlSpecChars(get_Signature($Target, 2, "Short"))."</b> in <b>".htmlSpecChars(get_TypeName($MethodInfo{2}{$Target}{"Class"}, 2))."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Class_Removed_Abstract_Method"
-                        or $Kind eq "Interface_Removed_Abstract_Method")
-                        {
-                            $Change = "Abstract method ".black_Name($Target, 1)." has been removed from this $Type_Type.";
-                            if($Level eq "Binary") {
-                                $Effect = "A client program may be interrupted by <b>NoSuchMethodError</b> exception.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: cannot find method <b>".htmlSpecChars(get_Signature($Target, 1, "Short"))."</b> in $Type_Type <b>".htmlSpecChars(get_TypeName($MethodInfo{1}{$Target}{"Class"}, 1))."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Interface_Added_Abstract_Method")
-                        {
-                            $Change = "Abstract method ".black_Name($Target, 2)." has been added to this $Type_Type.";
-                            if($Level eq "Binary") {
-                                $Effect = "No effect.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method <b>".htmlSpecChars(get_Signature($Target, 2, "Short"))."</b> in <b>".htmlSpecChars(get_TypeName($MethodInfo{2}{$Target}{"Class"}, 2))."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Interface_Added_Abstract_Method_Invoked_By_Others")
-                        {
-                            $Change = "Abstract method ".black_Name($Target, 2)." has been added to this $Type_Type.";
-                            if($Level eq "Binary") {
-                                $Effect = "A client program may be interrupted by <b>AbstractMethodError</b> exception. Added abstract method is called in 2nd library version by the method ".black_Name($Problems{"InvokedBy"}, 1)." and may not be implemented by old clients.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method <b>".htmlSpecChars(get_Signature($Target, 2, "Short"))."</b> in <b>".htmlSpecChars(get_TypeName($MethodInfo{2}{$Target}{"Class"}, 2))."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Class_Method_Became_Abstract")
-                        {
-                            $Change = "Method ".black_Name($Target, 1)." became <b>abstract</b>.";
-                            if($Level eq "Binary") {
-                                $Effect = "A client program may be interrupted by <b>InstantiationError</b> exception.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method <b>".htmlSpecChars(get_Signature($Target, 1, "Short"))."</b> in <b>".htmlSpecChars(get_TypeName($MethodInfo{1}{$Target}{"Class"}, 1))."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Class_Method_Became_NonAbstract")
-                        {
-                            $Change = "Abstract method ".black_Name($Target, 1)." became <b>non-abstract</b>.";
-                            if($Level eq "Binary") {
-                                $Effect = "Some methods in this class may change behavior.";
-                            }
-                            else {
-                                $Effect = "No effect.";
-                            }
-                        }
-                        elsif($Kind eq "Interface_Method_Became_NonDefault")
-                        {
-                            $Change = "Method ".black_Name($Target, 1)." became <b>non-default</b>.";
-                            if($Level eq "Binary") {
-                                $Effect = "A client program may be interrupted by <b>AbstractMethodError</b> exception.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method <b>".htmlSpecChars(get_Signature($Target, 1, "Short"))."</b> in <b>".htmlSpecChars(get_TypeName($MethodInfo{1}{$Target}{"Class"}, 1))."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Interface_Method_Became_Default")
-                        {
-                            $Change = "Method ".black_Name($Target, 1)." became <b>default</b>.";
-                            if($Level eq "Binary") {
-                                $Effect = "No effect.";
-                            }
-                            else {
-                                $Effect = "No effect.";
-                            }
-                        }
-                        elsif($Kind eq "Class_Overridden_Method")
-                        {
-                            $Change = "Method ".black_Name($Old_Value, 2)." has been overridden by ".black_Name($New_Value, 2);
-                            $Effect = "Method ".black_Name($New_Value, 2)." will be called instead of ".black_Name($Old_Value, 2)." in a client program.";
-                        }
-                        elsif($Kind eq "Class_Method_Moved_Up_Hierarchy")
-                        {
-                            $Change = "Method ".black_Name($Old_Value, 1)." has been moved up type hierarchy to ".black_Name($New_Value, 2);
-                            $Effect = "Method ".black_Name($New_Value, 2)." will be called instead of ".black_Name($Old_Value, 1)." in a client program.";
-                        }
-                        elsif($Kind eq "Abstract_Class_Added_Super_Interface")
-                        {
-                            $Change = "Added super-interface <b>".htmlSpecChars($Target)."</b>.";
-                            if($Level eq "Binary")
-                            {
-                                $Effect = "No effect.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method in <b>".htmlSpecChars($Target)."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Abstract_Class_Added_Super_Interface_Invoked_By_Others")
-                        {
-                            $Change = "Added super-interface <b>".htmlSpecChars($Target)."</b>.";
-                            if($Level eq "Binary") {
-                                $Effect = "If abstract methods from an added super-interface must be implemented by client then it may be interrupted by <b>AbstractMethodError</b> exception.<br/><br/>Abstract method ".black_Name_S(htmlSpecChars($Problems{"Invoked"}))." from the added super-interface is called by the method ".black_Name($Problems{"InvokedBy"}, 2)." in 2nd library version and may not be implemented by old clients.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method in <b>".htmlSpecChars($Target)."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Abstract_Class_Added_Super_Interface_With_Implemented_Methods")
-                        {
-                            $Change = "Added super-interface <b>".htmlSpecChars($Target)."</b>.";
-                            $Effect = "No effect.";
-                        }
-                        elsif($Kind eq "Interface_Added_Super_Interface")
-                        {
-                            $Change = "Added super-interface <b>".htmlSpecChars($Target)."</b>.";
-                            if($Level eq "Binary") {
-                                $Effect = "No effect.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method in <b>".htmlSpecChars($Target)."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Interface_Added_Super_Interface_Used_By_Others")
-                        {
-                            $Change = "Added super-interface <b>".htmlSpecChars($Target)."</b>.";
-                            if($Level eq "Binary")
-                            {
-                                $Effect = "If abstract methods from an added super-interface must be implemented by client then it may be interrupted by <b>AbstractMethodError</b> exception.<br/><br/>Abstract method ".black_Name_S(htmlSpecChars($Problems{"Invoked"}))." from the added super-interface is called by the method ".black_Name($Problems{"InvokedBy"}, 2)." in 2nd library version and may not be implemented by old clients.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method in <b>".htmlSpecChars($Target)."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Interface_Added_Super_Interface_With_Implemented_Methods")
-                        {
-                            $Change = "Added super-interface <b>".htmlSpecChars($Target)."</b>.";
-                            if($Level eq "Binary") {
-                                $Effect = "No effect.";
-                            }
-                            else {
-                                $Effect = "No effect.";
-                            }
-                        }
-                        elsif($Kind eq "Interface_Added_Super_Constant_Interface")
-                        {
-                            $Change = "Added super-interface <b>".htmlSpecChars($Target)."</b> containing constants only.";
-                            if($Level eq "Binary") {
-                                $Effect = "A static field from a super-interface of a client class may hide a field (with the same name) inherited from a super-class and cause <b>IncompatibleClassChangeError</b> exception.";
-                            }
-                            else {
-                                $Effect = "A static field from a super-interface of a client class may hide a field (with the same name) inherited from a super-class. Recompilation of a client class may be terminated with the message: reference to variable is ambiguous.";
-                            }
-                        }
-                        elsif($Kind eq "Interface_Removed_Super_Interface"
-                        or $Kind eq "Class_Removed_Super_Interface")
-                        {
-                            $Change = "Removed super-interface <b>".htmlSpecChars($Target)."</b>.";
-                            if($Level eq "Binary") {
-                                $Effect = "A client program may be interrupted by <b>NoSuchMethodError</b> exception.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: cannot find method in $Type_Type <b>".htmlSpecChars($TypeName)."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Interface_Removed_Super_Constant_Interface")
-                        {
-                            $Change = "Removed super-interface <b>".htmlSpecChars($Target)."</b> containing constants only.";
-                            if($Level eq "Binary") {
-                                $Effect = "No effect.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: cannot find variable in $Type_Type <b>".htmlSpecChars($TypeName)."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Added_Super_Class")
-                        {
-                            $Change = "Added super-class <b>".htmlSpecChars($Target)."</b>.";
-                            if($Level eq "Binary") {
-                                $Effect = "A static field from a super-interface of a client class may hide a field (with the same name) inherited from new super-class and cause <b>IncompatibleClassChangeError</b> exception.";
-                            }
-                            else {
-                                $Effect = "A static field from a super-interface of a client class may hide a field (with the same name) inherited from new super-class. Recompilation of a client class may be terminated with the message: reference to variable is ambiguous.";
-                            }
-                        }
-                        elsif($Kind eq "Abstract_Class_Added_Super_Abstract_Class")
-                        {
-                            $Change = "Added abstract super-class <b>".htmlSpecChars($Target)."</b>.";
-                            if($Level eq "Binary") {
-                                $Effect = "No effect.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method in <b>".htmlSpecChars($Target)."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Abstract_Class_Added_Super_Abstract_Class_Invoked_By_Others")
-                        {
-                            $Change = "Added abstract super-class <b>".htmlSpecChars($Target)."</b>.";
-                            if($Level eq "Binary") {
-                                $Effect = "If abstract methods from an added super-class must be implemented by client then it may be interrupted by <b>AbstractMethodError</b> exception.<br/><br/>Abstract method ".black_Name_S(htmlSpecChars($Problems{"Invoked"}))." from the added abstract super-class is called by the method ".black_Name($Problems{"InvokedBy"}, 2)." in 2nd library version and may not be implemented by old clients.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method in <b>".htmlSpecChars($Target)."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Removed_Super_Class")
-                        {
-                            $Change = "Removed super-class <b>".htmlSpecChars($Target)."</b>.";
-                            if($Level eq "Binary") {
-                                $Effect = "Access of a client program to the fields or methods of the old super-class may be interrupted by <b>NoSuchFieldError</b> or <b>NoSuchMethodError</b> exceptions.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: cannot find variable (or method) in <b>".htmlSpecChars($TypeName)."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Changed_Super_Class")
-                        {
-                            $Change = "Superclass has been changed from <b>".htmlSpecChars($Old_Value)."</b> to <b>".htmlSpecChars($New_Value)."</b>.";
-                            if($Level eq "Binary") {
-                                $Effect = "1) Access of a client program to the fields or methods of the old super-class may be interrupted by <b>NoSuchFieldError</b> or <b>NoSuchMethodError</b> exceptions.<br/>2) A static field from a super-interface of a client class may hide a field (with the same name) inherited from new super-class and cause <b>IncompatibleClassChangeError</b> exception.";
-                            }
-                            else {
-                                $Effect = "1) Recompilation of a client program may be terminated with the message: cannot find variable (or method) in <b>".htmlSpecChars($TypeName)."</b>.<br/>2) A static field from a super-interface of a client class may hide a field (with the same name) inherited from new super-class. Recompilation of a client class may be terminated with the message: reference to variable is ambiguous.";
-                            }
-                        }
-                        elsif($Kind eq "Class_Added_Field")
-                        {
-                            $Change = "Field <b>$Target</b> has been added to this class.";
-                            if($Level eq "Binary")
-                            {
-                                $Effect = "No effect.";
-                                # $Effect .= "<br/><b>NOTE</b>: A static field from a super-interface of a client class may hide an added field (with the same name) inherited from the super-class of a client class and cause <b>IncompatibleClassChangeError</b> exception.";
-                            }
-                            else
-                            {
-                                $Effect = "No effect.";
-                                # $Effect .= "<br/><b>NOTE</b>: A static field from a super-interface of a client class may hide an added field (with the same name) inherited from the super-class of a client class. Recompilation of a client class may be terminated with the message: reference to <b>$Target</b> is ambiguous.";
-                            }
-                        }
-                        elsif($Kind eq "Interface_Added_Field")
-                        {
-                            $Change = "Field <b>$Target</b> has been added to this interface.";
-                            if($Level eq "Binary") {
-                                $Effect = "No effect.<br/><b>NOTE</b>: An added static field from a super-interface of a client class may hide a field (with the same name) inherited from the super-class of a client class and cause <b>IncompatibleClassChangeError</b> exception.";
-                            }
-                            else {
-                                $Effect = "No effect.<br/><b>NOTE</b>: An added static field from a super-interface of a client class may hide a field (with the same name) inherited from the super-class of a client class. Recompilation of a client class may be terminated with the message: reference to <b>$Target</b> is ambiguous.";
-                            }
-                        }
-                        elsif($Kind eq "Renamed_Field")
-                        {
-                            $Change = "Field <b>$Target</b> has been renamed to <b>".htmlSpecChars($New_Value)."</b>.";
-                            if($Level eq "Binary") {
-                                $Effect = "A client program may be interrupted by <b>NoSuchFieldError</b> exception.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: cannot find variable <b>$Target</b> in <b>".htmlSpecChars($TypeName)."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Renamed_Constant_Field")
-                        {
-                            if($Level eq "Binary") {
-                                $Change = "Field <b>$Target</b> (".htmlSpecChars($Field_Type).") with the compile-time constant value <b>$Field_Value</b> has been renamed to <b>".htmlSpecChars($New_Value)."</b>.";
-                                $Effect = "A client program may change behavior.";
-                            }
-                            else {
-                                $Change = "Field <b>$Target</b> has been renamed to <b>".htmlSpecChars($New_Value)."</b>.";
-                                $Effect = "Recompilation of a client program may be terminated with the message: cannot find variable <b>$Target</b> in <b>".htmlSpecChars($TypeName)."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Removed_NonConstant_Field")
-                        {
-                            $Change = "Field <b>$Target</b> of type ".htmlSpecChars($Field_Type)." has been removed from this $Type_Type.";
-                            if($Level eq "Binary") {
-                                $Effect = "A client program may be interrupted by <b>NoSuchFieldError</b> exception.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: cannot find variable <b>$Target</b> in <b>".htmlSpecChars($TypeName)."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Removed_Constant_Field")
-                        {
-                            $Change = "Field <b>$Target</b> (".htmlSpecChars($Field_Type).") with the compile-time constant value <b>$Field_Value</b> has been removed from this $Type_Type.";
-                            if($Level eq "Binary") {
-                                $Effect = "A client program may change behavior.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: cannot find variable <b>$Target</b> in <b>".htmlSpecChars($TypeName)."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Changed_Field_Type")
-                        {
-                            $Change = "Type of field <b>$Target</b> has been changed from <span class='nowrap'><b>".htmlSpecChars($Old_Value)."</b></span> to <span class='nowrap'><b>".htmlSpecChars($New_Value)."</b></span>.";
-                            if($Level eq "Binary") {
-                                $Effect = "A client program may be interrupted by <b>NoSuchFieldError</b> exception.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: incompatible types, found: <b>".htmlSpecChars($Old_Value)."</b>, required: <b>".htmlSpecChars($New_Value)."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Changed_Field_Access")
-                        {
-                            $Change = "Access level of field <b>$Target</b> has been changed from <span class='nowrap'><b>$Old_Value</b></span> to <span class='nowrap'><b>$New_Value</b></span>.";
-                            if($Level eq "Binary") {
-                                $Effect = "A client program may be interrupted by <b>IllegalAccessError</b> exception.";
-                            }
-                            else
-                            {
-                                if($New_Value eq "package-private") {
-                                    $Effect = "Recompilation of a client program may be terminated with the message: <b>$Target</b> is not public in <b>".htmlSpecChars($TypeName)."</b>; cannot be accessed from outside package.";
-                                }
-                                else {
-                                    $Effect = "Recompilation of a client program may be terminated with the message: <b>$Target</b> has <b>$New_Value</b> access in <b>".htmlSpecChars($TypeName)."</b>.";
-                                }
-                            }
-                        }
-                        elsif($Kind eq "Changed_Final_Field_Value")
-                        { # Binary Only
-                            $Change = "Value of final field <b>$Target</b> (<b>$Field_Type</b>) has been changed from <span class='nowrap'><b>".htmlSpecChars($Old_Value)."</b></span> to <span class='nowrap'><b>".htmlSpecChars($New_Value)."</b></span>.";
-                            $Effect = "Old value of the field will be inlined to the client code at compile-time and will be used instead of a new one.";
-                        }
-                        elsif($Kind eq "Changed_Final_Version_Field_Value")
-                        { # Binary Only
-                            $Change = "Value of final field <b>$Target</b> (<b>$Field_Type</b>) has been changed from <span class='nowrap'><b>".htmlSpecChars($Old_Value)."</b></span> to <span class='nowrap'><b>".htmlSpecChars($New_Value)."</b></span>.";
-                            $Effect = "Old value of the field will be inlined to the client code at compile-time and will be used instead of a new one.";
-                        }
-                        elsif($Kind eq "Field_Became_Final")
-                        {
-                            $Change = "Field <b>$Target</b> became <b>final</b>.";
-                            if($Level eq "Binary") {
-                                $Effect = "A client program may be interrupted by <b>IllegalAccessError</b> exception when attempt to assign new values to the field.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: cannot assign a value to final variable $Target.";
-                            }
-                        }
-                        elsif($Kind eq "Field_Became_NonFinal")
-                        { # Binary Only
-                            $Change = "Field <b>$Target</b> became <b>non-final</b>.";
-                            $Effect = "Old value of the field will be inlined to the client code at compile-time and will be used instead of a new one.";
-                        }
-                        elsif($Kind eq "NonConstant_Field_Became_Static")
-                        { # Binary Only
-                            $Change = "Non-final field <b>$Target</b> became <b>static</b>.";
-                            $Effect = "A client program may be interrupted by <b>IncompatibleClassChangeError</b> exception.";
-                        }
-                        elsif($Kind eq "NonConstant_Field_Became_NonStatic")
-                        {
-                            if($Level eq "Binary") {
-                                $Change = "Non-constant field <b>$Target</b> became <b>non-static</b>.";
-                                $Effect = "A client program may be interrupted by <b>IncompatibleClassChangeError</b> exception.";
-                            }
-                            else {
-                                $Change = "Field <b>$Target</b> became <b>non-static</b>.";
-                                $Effect = "Recompilation of a client program may be terminated with the message: non-static variable <b>$Target</b> cannot be referenced from a static context.";
-                            }
-                        }
-                        elsif($Kind eq "Constant_Field_Became_NonStatic")
-                        { # Source Only
-                            $Change = "Field <b>$Target</b> became <b>non-static</b>.";
-                            $Effect = "Recompilation of a client program may be terminated with the message: non-static variable <b>$Target</b> cannot be referenced from a static context.";
-                        }
-                        elsif($Kind eq "Class_Became_Interface")
-                        {
-                            $Change = "This <b>class</b> became <b>interface</b>.";
-                            if($Level eq "Binary") {
-                                $Effect = "A client program may be interrupted by <b>IncompatibleClassChangeError</b> or <b>InstantiationError</b> exception dependent on the usage of this class.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: <b>".htmlSpecChars($TypeName)."</b> is abstract; cannot be instantiated.";
-                            }
-                        }
-                        elsif($Kind eq "Interface_Became_Class")
-                        {
-                            $Change = "This <b>interface</b> became <b>class</b>.";
-                            if($Level eq "Binary") {
-                                $Effect = "A client program may be interrupted by <b>IncompatibleClassChangeError</b> exception.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: interface expected.";
-                            }
-                        }
-                        elsif($Kind eq "Class_Became_Final")
-                        {
-                            $Change = "This class became <b>final</b>.";
-                            if($Level eq "Binary") {
-                                $Effect = "A client program may be interrupted by <b>VerifyError</b> exception.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: cannot inherit from final <b>".htmlSpecChars($TypeName)."</b>.";
-                            }
-                        }
-                        elsif($Kind eq "Class_Became_Abstract")
-                        {
-                            $Change = "This class became <b>abstract</b>.";
-                            if($Level eq "Binary") {
-                                $Effect = "A client program may be interrupted by <b>InstantiationError</b> exception.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: <b>".htmlSpecChars($TypeName)."</b> is abstract; cannot be instantiated.";
-                            }
-                        }
-                        elsif($Kind eq "Removed_Class")
-                        {
-                            $Change = "This class has been removed.";
-                            if($Level eq "Binary") {
-                                $Effect = "A client program may be interrupted by <b>NoClassDefFoundError</b> exception.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: cannot find class <b>".htmlSpecChars($TypeName)."</b>.";
-                            }
+                            $M_Problems_High+=1;
                         }
-                        elsif($Kind eq "Removed_Interface")
-                        {
-                            $Change = "This interface has been removed.";
-                            if($Level eq "Binary") {
-                                $Effect = "A client program may be interrupted by <b>NoClassDefFoundError</b> exception.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the message: cannot find class <b>".htmlSpecChars($TypeName)."</b>.";
-                            }
+                        elsif($Severity eq "Medium") {
+                            $M_Problems_Medium+=1;
                         }
-                        elsif($Kind eq "Removed_Annotation")
-                        {
-                            $Change = "This annotation type has been removed.";
-                            if($Level eq "Binary") {
-                                $Effect = "No effect.";
-                            }
-                            else {
-                                $Effect = "Recompilation of a client program may be terminated with the error message: cannot find symbol <b>\@".htmlSpecChars($TypeName)."</b>.";
-                            }
+                        elsif($Severity eq "Low") {
+                            $M_Problems_Low+=1;
                         }
-                        if($Change)
-                        {
-                            $TYPE_REPORT .= "<tr><th>$ProblemNum</th><td>".$Change."</td><td>".$Effect."</td></tr>\n";
-                            $ProblemNum += 1;
-                            $ProblemsNum += 1;
-                            $Kinds_Locations{$Kind}{$Location} = 1;
+                        if(($Severity ne "Low" or $In::Opt{"StrictCompat"})
+                        and $Severity ne "Safe") {
+                            $TotalAffected{$Level}{$Method} = $Severity;
                         }
                     }
                 }
-                $ProblemNum -= 1;
-                if($TYPE_REPORT)
+            }
+        }
+    }
+    
+    my %MethodTypeIndex = ();
+    
+    foreach my $Method (sort keys(%CompatProblems))
+    {
+        foreach my $Kind (sort keys(%{$CompatProblems{$Method}}))
+        {
+            if($CompatRules{$Level}{$Kind}{"Kind"} eq "Types")
+            {
+                my $Severity = $CompatRules{$Level}{$Kind}{"Severity"};
+                if(($Severity ne "Low" or $In::Opt{"StrictCompat"})
+                and $Severity ne "Safe")
                 {
-                    my $Affected = "";
-                    if(not defined $TypeInfo{1}{$TypeId}{"Annotation"}) {
-                        $Affected = getAffectedMethods($Level, $TypeName, \%Kinds_Locations);
-                    }
-                    
-                    my $ShowType = $TypeName;
-                    if($NameSpace)
+                    if(my $Sev = $TotalAffected{$Level}{$Method})
                     {
-                        $TYPE_REPORT = cut_Namespace($TYPE_REPORT, $NameSpace);
-                        $ShowType = cut_Namespace($ShowType, $NameSpace);
-                        $Affected = cut_Namespace($Affected, $NameSpace);
+                        if($Severity_Val{$Severity}>$Severity_Val{$Sev}) {
+                            $TotalAffected{$Level}{$Method} = $Severity;
+                        }
                     }
-                    
-                    $TYPE_PROBLEMS .= $ContentSpanStart."<span class='ext'>[+]</span> ".htmlSpecChars($ShowType);
-                    if($OldStyle) {
-                        $TYPE_PROBLEMS .= " ($ProblemNum)";
+                    else {
+                        $TotalAffected{$Level}{$Method} = $Severity;
+                    }
+                }
+                
+                my $MK = $CompatProblems{$Method}{$Kind};
+                my (@Locs1, @Locs2) = ();
+                foreach my $Loc (sort {length($a)<=>length($b)} sort keys(%{$MK}))
+                {
+                    if(index($Loc, "retval")==0 or index($Loc, "this")==0) {
+                        push(@Locs2, $Loc);
                     }
                     else {
-                        $TYPE_PROBLEMS .= " <span".getStyle("T", $TargetSeverity, $ProblemNum)."> $ProblemNum </span>";
+                        push(@Locs1, $Loc);
                     }
-                    $TYPE_PROBLEMS .= $ContentSpanEnd."<br/>\n";
-                    $TYPE_PROBLEMS .= $ContentDivStart."<table class='ptable'><tr>";
-                    $TYPE_PROBLEMS .= "<th width='2%'></th><th width='47%'>Change</th><th>Effect</th>";
-                    $TYPE_PROBLEMS .= "</tr>$TYPE_REPORT</table>".$Affected."<br/><br/>$ContentDivEnd\n";
+                }
+                foreach my $Loc (@Locs1, @Locs2)
+                {
+                    my $Type = $MK->{$Loc}{"Type_Name"};
+                    my $Target = $MK->{$Loc}{"Target"};
+                    
+                    if(defined $MethodTypeIndex{$Method}{$Type}{$Kind}{$Target})
+                    { # one location for one type and target
+                        next;
+                    }
+                    $MethodTypeIndex{$Method}{$Type}{$Kind}{$Target} = 1;
+                    
+                    $TypeChanges{$Level}{$Type}{$Kind}{$Loc} = $MK->{$Loc};
+                    $TypeProblemsIndex{$Level}{$Type}{$Kind}{$Loc}{$Method} = 1;
                 }
             }
-            
-            $TYPE_PROBLEMS .= "<br/>";
         }
     }
-    if($TYPE_PROBLEMS)
+    
+    %MethodTypeIndex = (); # clear memory
+    
+    $T_Problems_High = getTypeProblemsCount("High", $Level);
+    $T_Problems_Medium = getTypeProblemsCount("Medium", $Level);
+    $T_Problems_Low = getTypeProblemsCount("Low", $Level);
+    $T_Other = getTypeProblemsCount("Safe", $Level);
+    
+    my $SCount = keys(%CheckedMethods)-$Added;
+    if($SCount)
     {
-        $TYPE_PROBLEMS = insertIDs($TYPE_PROBLEMS);
-        
-        my $Title = "Problems with Data Types, $TargetSeverity Severity";
-        if($TargetSeverity eq "Safe")
-        { # Safe Changes
-            $Title = "Other Changes in Data Types";
+        my %Weight = (
+            "High" => 100,
+            "Medium" => 50,
+            "Low" => 25
+        );
+        foreach (keys(%{$TotalAffected{$Level}})) {
+            $RESULT{$Level}{"Affected"}+=$Weight{$TotalAffected{$Level}{$_}};
         }
-        if($OldStyle) {
-            $TYPE_PROBLEMS = "<h2>$Title ($ProblemsNum)</h2><hr/>\n".$TYPE_PROBLEMS;
+        $RESULT{$Level}{"Affected"} = $RESULT{$Level}{"Affected"}/$SCount;
+    }
+    else {
+        $RESULT{$Level}{"Affected"} = 0;
+    }
+    $RESULT{$Level}{"Affected"} = showNum($RESULT{$Level}{"Affected"});
+    if($RESULT{$Level}{"Affected"}>=100) {
+        $RESULT{$Level}{"Affected"} = 100;
+    }
+    
+    my ($TestInfo, $TestResults, $Problem_Summary) = ();
+    
+    # test info
+    $TestInfo .= "<h2>Test Info</h2><hr/>\n";
+    $TestInfo .= "<table class='summary'>\n";
+    $TestInfo .= "<tr><th>Library Name</th><td>".$In::Opt{"TargetTitle"}."</td></tr>\n";
+    $TestInfo .= "<tr><th>Version #1</th><td>".$In::Desc{1}{"Version"}."</td></tr>\n";
+    $TestInfo .= "<tr><th>Version #2</th><td>".$In::Desc{2}{"Version"}."</td></tr>\n";
+    
+    if($In::Opt{"JoinReport"})
+    {
+        if($Level eq "Binary") {
+            $TestInfo .= "<tr><th>Subject</th><td width='150px'>Binary Compatibility</td></tr>\n"; # Run-time
         }
-        else {
-            $TYPE_PROBLEMS = "<h2>$Title <span".getStyle("T", $TargetSeverity, $ProblemsNum)."> $ProblemsNum </span></h2><hr/>\n".$TYPE_PROBLEMS;
+        if($Level eq "Source") {
+            $TestInfo .= "<tr><th>Subject</th><td width='150px'>Source Compatibility</td></tr>\n"; # Build-time
         }
-        $TYPE_PROBLEMS = "<a name='".get_Anchor("Type", $Level, $TargetSeverity)."'></a>\n".$TYPE_PROBLEMS;
-        $TYPE_PROBLEMS .= $TOP_REF."<br/>\n";
     }
-    return $TYPE_PROBLEMS;
-}
-
-sub cut_Namespace($$)
-{
-    my ($N, $Ns) = @_;
-    $N=~s/(\W|\A)\Q$Ns\E\.(\w)/$1$2/g;
-    return $N;
-}
-
-sub getAffectedMethods($$$)
-{
-    my ($Level, $Target_TypeName, $Kinds_Locations) = @_;
+    $TestInfo .= "</table>\n";
     
-    my $LIMIT = 10;
-    if(defined $AffectLimit) {
-        $LIMIT = $AffectLimit;
+    # test results
+    $TestResults .= "<h2>Test Results</h2><hr/>\n";
+    $TestResults .= "<table class='summary'>\n";
+    
+    my $Checked_Archives_Link = "0";
+    $Checked_Archives_Link = "<a href='#Checked_Archives' style='color:Blue;'>".keys(%{$LibArchives{1}})."</a>" if(keys(%{$LibArchives{1}})>0);
+    
+    $TestResults .= "<tr><th>Total JARs</th><td>$Checked_Archives_Link</td></tr>\n";
+    $TestResults .= "<tr><th>Total Methods / Classes</th><td>".keys(%CheckedMethods)." / ".keys(%CheckedTypes)."</td></tr>\n";
+    
+    $RESULT{$Level}{"Problems"} += $Removed+$M_Problems_High+$T_Problems_High+$T_Problems_Medium+$M_Problems_Medium;
+    if($In::Opt{"StrictCompat"}) {
+        $RESULT{$Level}{"Problems"}+=$T_Problems_Low+$M_Problems_Low;
+    }
+    else {
+        $RESULT{$Level}{"Warnings"}+=$T_Problems_Low+$M_Problems_Low;
     }
     
-    my @Kinds = sort keys(%{$Kinds_Locations});
-    my %KLocs = ();
-    foreach my $Kind (@Kinds)
+    my $META_DATA = "kind:".lc($Level).";";
+    $META_DATA .= $RESULT{$Level}{"Problems"}?"verdict:incompatible;":"verdict:compatible;";
+    $TestResults .= "<tr><th>Compatibility</th>\n";
+    
+    my $BC_Rate = showNum(100 - $RESULT{$Level}{"Affected"});
+    
+    if($RESULT{$Level}{"Problems"})
+    {
+        my $Cl = "incompatible";
+        if($BC_Rate>=90) {
+            $Cl = "warning";
+        }
+        elsif($BC_Rate>=80) {
+            $Cl = "almost_compatible";
+        }
+        
+        $TestResults .= "<td class=\'$Cl\'>".$BC_Rate."%</td>\n";
+    }
+    else
     {
-        my @Locs = sort {$a=~/retval/ cmp $b=~/retval/} sort {length($a)<=>length($b)} sort keys(%{$Kinds_Locations->{$Kind}});
-        $KLocs{$Kind} = \@Locs;
+        $TestResults .= "<td class=\'compatible\'>100%</td>\n";
     }
     
-    my %SymLocKind = ();
-    foreach my $Method (sort keys(%{$TypeProblemsIndex{$Target_TypeName}}))
+    $TestResults .= "</tr>\n";
+    $TestResults .= "</table>\n";
+    
+    $META_DATA .= "affected:".$RESULT{$Level}{"Affected"}.";";# in percents
+    
+    # Problem Summary
+    $Problem_Summary .= "<h2>Problem Summary</h2><hr/>\n";
+    $Problem_Summary .= "<table class='summary'>\n";
+    $Problem_Summary .= "<tr><th></th><th style='text-align:center;'>Severity</th><th style='text-align:center;'>Count</th></tr>\n";
+    
+    my $Added_Link = "0";
+    if($Added>0)
     {
-        if($Method eq ".client_method") {
-            next;
+        if($In::Opt{"ShortMode"}) {
+            $Added_Link = $Added;
         }
-        
-        foreach my $Kind (@Kinds)
+        else
         {
-            foreach my $Loc (@{$KLocs{$Kind}})
-            {
-                if(not defined $CompatProblems{$Method}{$Kind}{$Loc}) {
-                    next;
-                }
-                
-                my $Type_Name = $CompatProblems{$Method}{$Kind}{$Loc}{"Type_Name"};
-                if($Type_Name ne $Target_TypeName) {
-                    next;
-                }
-                
-                $SymLocKind{$Method}{$Loc}{$Kind} = 1;
-                last;
+            if($In::Opt{"JoinReport"}) {
+                $Added_Link = "<a href='#".$Level."_Added' style='color:Blue;'>$Added</a>";
+            }
+            else {
+                $Added_Link = "<a href='#Added' style='color:Blue;'>$Added</a>";
             }
         }
     }
+    $META_DATA .= "added:$Added;";
+    $Problem_Summary .= "<tr><th>Added Methods</th><td>-</td><td".getStyle("M", "Added", $Added).">$Added_Link</td></tr>\n";
     
-    %KLocs = (); # clear
-    
-    if(not keys(%SymLocKind)) {
-        return "";
-    }
-    
-    my %SymSel = ();
-    my $Num = 0;
-    foreach my $Method (sort keys(%SymLocKind))
+    my $Removed_Link = "0";
+    if($Removed>0)
     {
-        LOOP: foreach my $Loc (sort {$a=~/retval/ cmp $b=~/retval/} sort {length($a)<=>length($b)} sort keys(%{$SymLocKind{$Method}}))
+        if($In::Opt{"ShortMode"}) {
+            $Removed_Link = $Removed;
+        }
+        else
         {
-            foreach my $Kind (sort keys(%{$SymLocKind{$Method}{$Loc}}))
-            {
-                $SymSel{$Method}{"Loc"} = $Loc;
-                $SymSel{$Method}{"Kind"} = $Kind;
-                last LOOP;
+            if($In::Opt{"JoinReport"}) {
+                $Removed_Link = "<a href='#".$Level."_Removed' style='color:Blue;'>$Removed</a>"
+            }
+            else {
+                $Removed_Link = "<a href='#Removed' style='color:Blue;'>$Removed</a>"
             }
-        }
-        
-        $Num += 1;
-        
-        if($Num>=$LIMIT) {
-            last;
         }
     }
+    $META_DATA .= "removed:$Removed;";
+    $Problem_Summary .= "<tr><th>Removed Methods</th>";
+    $Problem_Summary .= "<td>High</td><td".getStyle("M", "Removed", $Removed).">$Removed_Link</td></tr>\n";
     
-    my $Affected = "";
+    my $TH_Link = "0";
+    $TH_Link = "<a href='#".getAnchor("Type", $Level, "High")."' style='color:Blue;'>$T_Problems_High</a>" if($T_Problems_High>0);
+    $META_DATA .= "type_problems_high:$T_Problems_High;";
+    $Problem_Summary .= "<tr><th rowspan='3'>Problems with<br/>Data Types</th>";
+    $Problem_Summary .= "<td>High</td><td".getStyle("T", "High", $T_Problems_High).">$TH_Link</td></tr>\n";
     
-    foreach my $Method (sort {lc($a) cmp lc($b)} keys(%SymSel))
+    my $TM_Link = "0";
+    $TM_Link = "<a href='#".getAnchor("Type", $Level, "Medium")."' style='color:Blue;'>$T_Problems_Medium</a>" if($T_Problems_Medium>0);
+    $META_DATA .= "type_problems_medium:$T_Problems_Medium;";
+    $Problem_Summary .= "<tr><td>Medium</td><td".getStyle("T", "Medium", $T_Problems_Medium).">$TM_Link</td></tr>\n";
+    
+    my $TL_Link = "0";
+    $TL_Link = "<a href='#".getAnchor("Type", $Level, "Low")."' style='color:Blue;'>$T_Problems_Low</a>" if($T_Problems_Low>0);
+    $META_DATA .= "type_problems_low:$T_Problems_Low;";
+    $Problem_Summary .= "<tr><td>Low</td><td".getStyle("T", "Low", $T_Problems_Low).">$TL_Link</td></tr>\n";
+    
+    my $MH_Link = "0";
+    $MH_Link = "<a href='#".getAnchor("Method", $Level, "High")."' style='color:Blue;'>$M_Problems_High</a>" if($M_Problems_High>0);
+    $META_DATA .= "method_problems_high:$M_Problems_High;";
+    $Problem_Summary .= "<tr><th rowspan='3'>Problems with<br/>Methods</th>";
+    $Problem_Summary .= "<td>High</td><td".getStyle("M", "High", $M_Problems_High).">$MH_Link</td></tr>\n";
+    
+    my $MM_Link = "0";
+    $MM_Link = "<a href='#".getAnchor("Method", $Level, "Medium")."' style='color:Blue;'>$M_Problems_Medium</a>" if($M_Problems_Medium>0);
+    $META_DATA .= "method_problems_medium:$M_Problems_Medium;";
+    $Problem_Summary .= "<tr><td>Medium</td><td".getStyle("M", "Medium", $M_Problems_Medium).">$MM_Link</td></tr>\n";
+    
+    my $ML_Link = "0";
+    $ML_Link = "<a href='#".getAnchor("Method", $Level, "Low")."' style='color:Blue;'>$M_Problems_Low</a>" if($M_Problems_Low>0);
+    $META_DATA .= "method_problems_low:$M_Problems_Low;";
+    $Problem_Summary .= "<tr><td>Low</td><td".getStyle("M", "Low", $M_Problems_Low).">$ML_Link</td></tr>\n";
+    
+    # Safe Changes
+    if($T_Other)
     {
-        my $Kind = $SymSel{$Method}{"Kind"};
-        my $Loc = $SymSel{$Method}{"Loc"};
-        
-        my $Desc = getAffectDesc($Method, $Kind, $Loc, $Level);
-        my $PName = getParamName($Loc);
-        my $Pos = getParamPos($PName, $Method, 1);
-        
-        $Affected .= "<span class='iname_a'>".get_Signature($Method, 1, "HTML|Italic|Param|Class|Target=".$Pos)."</span><br/>";
-        $Affected .= "<div class='affect'>".$Desc."</div>\n";
+        my $TS_Link = "<a href='#".getAnchor("Type", $Level, "Safe")."' style='color:Blue;'>$T_Other</a>";
+        $Problem_Summary .= "<tr><th>Other Changes<br/>in Data Types</th><td>-</td><td".getStyle("T", "Safe", $T_Other).">$TS_Link</td></tr>\n";
     }
     
-    if(keys(%SymLocKind)>$LIMIT) {
-        $Affected .= " <b>...</b>\n<br/>\n"; # and others ...
+    if($M_Other)
+    {
+        my $MS_Link = "<a href='#".getAnchor("Method", $Level, "Safe")."' style='color:Blue;'>$M_Other</a>";
+        $Problem_Summary .= "<tr><th>Other Changes<br/>in Methods</th><td>-</td><td".getStyle("M", "Safe", $M_Other).">$MS_Link</td></tr>\n";
     }
+    $META_DATA .= "checked_methods:".keys(%CheckedMethods).";";
+    $META_DATA .= "checked_types:".keys(%CheckedTypes).";";
+    $META_DATA .= "tool_version:$TOOL_VERSION";
+    $Problem_Summary .= "</table>\n";
+    return ($TestInfo.$TestResults.$Problem_Summary, $META_DATA);
+}
+
+sub getStyle($$$)
+{
+    my ($Subj, $Act, $Num) = @_;
+    my %Style = (
+        "Added"=>"new",
+        "Removed"=>"failed",
+        "Safe"=>"passed",
+        "Low"=>"warning",
+        "Medium"=>"failed",
+        "High"=>"failed"
+    );
     
-    $Affected = "<div class='affected'>".$Affected."</div>";
-    if($Affected)
-    {
-        my $Num = keys(%SymLocKind);
-        my $Per = show_number($Num*100/keys(%CheckedMethods));
-        $Affected =  $ContentDivStart.$Affected.$ContentDivEnd;
-        $Affected =  $ContentSpanStart_Affected."[+] affected methods: $Num ($Per\%)".$ContentSpanEnd.$Affected;
+    if($Num>0) {
+        return " class='".$Style{$Act}."'";
     }
     
-    return ($Affected);
+    return "";
 }
 
-sub getAffectDesc($$$$)
+sub getAnchor($$$)
 {
-    my ($Method, $Kind, $Location, $Level) = @_;
-    my %Affect = %{$CompatProblems{$Method}{$Kind}{$Location}};
-    my $New_Value = $Affect{"New_Value"};
-    my $Type_Name = $Affect{"Type_Name"};
-    my @Sentence_Parts = ();
-    
-    $Location=~s/\.[^.]+?\Z//;
-    
-    my %TypeAttr = get_Type($MethodInfo{1}{$Method}{"Class"}, 1);
-    my $Type_Type = $TypeAttr{"Type"};
-    
-    my $ABSTRACT_M = $MethodInfo{1}{$Method}{"Abstract"}?" abstract":"";
-    my $ABSTRACT_C = $TypeAttr{"Abstract"}?" abstract":"";
-    my $METHOD_TYPE = $MethodInfo{1}{$Method}{"Constructor"}?"constructor":"method";
-    
-    if($Kind eq "Class_Overridden_Method" or $Kind eq "Class_Method_Moved_Up_Hierarchy") {
-        return "Method '".highLight_Signature($New_Value, 2)."' will be called instead of this method in a client program.";
+    my ($Kind, $Level, $Severity) = @_;
+    if($In::Opt{"JoinReport"})
+    {
+        if($Severity eq "Safe") {
+            return "Other_".$Level."_Changes_In_".$Kind."s";
+        }
+        else {
+            return $Kind."_".$Level."_Problems_".$Severity;
+        }
     }
-    elsif($TypeProblems_Kind{$Level}{$Kind})
+    else
     {
-        my %MInfo = %{$MethodInfo{1}{$Method}};
-        
-        if($Location eq "this") {
-            return "This$ABSTRACT_M $METHOD_TYPE is from \'".htmlSpecChars($Type_Name)."\'$ABSTRACT_C $Type_Type.";
+        if($Severity eq "Safe") {
+            return "Other_Changes_In_".$Kind."s";
         }
-        
-        my $TypeID = undef;
-        
-        if($Location=~/retval/)
-        { # return value
-            if($Location=~/\./) {
-                push(@Sentence_Parts, "Field \'".htmlSpecChars($Location)."\' in return value");
-            }
-            else {
-                push(@Sentence_Parts, "Return value");
+        else {
+            return $Kind."_Problems_".$Severity;
+        }
+    }
+}
+
+sub getReportAdded($)
+{
+    if($In::Opt{"ShortMode"}) {
+        return "";
+    }
+    
+    my $Level = $_[0];
+    my ($ADDED_METHODS, %MethodAddedInArchiveClass);
+    foreach my $Method (sort keys(%CompatProblems))
+    {
+        foreach my $Kind (sort keys(%{$CompatProblems{$Method}}))
+        {
+            if($Kind eq "Added_Method")
+            {
+                my $ArchiveName = $MethodInfo{2}{$Method}{"Archive"};
+                my $ClassName = getShortName($MethodInfo{2}{$Method}{"Class"}, 2);
+                if($Level eq "Source")
+                {
+                    if($ChangedReturnFromVoid{$Method}) {
+                        next;
+                    }
+                }
+                $MethodAddedInArchiveClass{$ArchiveName}{$ClassName}{$Method} = 1;
             }
-            
-            $TypeID = $MInfo{"Return"};
         }
-        elsif($Location=~/this/)
-        { # "this" reference
-            push(@Sentence_Parts, "Field \'".htmlSpecChars($Location)."\' in the object");
+    }
+    my $Added_Number = 0;
+    foreach my $ArchiveName (sort {lc($a) cmp lc($b)} keys(%MethodAddedInArchiveClass))
+    {
+        foreach my $ClassName (sort {lc($a) cmp lc($b)} keys(%{$MethodAddedInArchiveClass{$ArchiveName}}))
+        {
+            my %NameSpace_Method = ();
+            foreach my $Method (keys(%{$MethodAddedInArchiveClass{$ArchiveName}{$ClassName}})) {
+                $NameSpace_Method{$MethodInfo{2}{$Method}{"Package"}}{$Method} = 1;
+            }
             
-            $TypeID = $MInfo{"Class"};
-        }
-        else
-        { # parameters
-            my $PName = getParamName($Location);
-            my $PPos = getParamPos($PName, $Method, 1);
+            my $ShowClass = $ClassName;
+            $ShowClass=~s/<.*>//g;
             
-            if($Location=~/\./) {
-                push(@Sentence_Parts, "Field \'".htmlSpecChars($Location)."\' in ".showPos($PPos)." parameter");
-            }
-            else {
-                push(@Sentence_Parts, showPos($PPos)." parameter");
-            }
-            if($PName) {
-                push(@Sentence_Parts, "\'$PName\'");
+            foreach my $NameSpace (sort keys(%NameSpace_Method))
+            {
+                $ADDED_METHODS .= "<span class='jar'>$ArchiveName</span>, <span class='cname'>".specChars($ShowClass).".class</span><br/>\n";
+                
+                if($NameSpace) {
+                    $ADDED_METHODS .= "<span class='pkg_t'>package</span> <span class='pkg'>$NameSpace</span><br/>\n";
+                }
+                
+                if($In::Opt{"Compact"}) {
+                    $ADDED_METHODS .= "<div class='symbols'>";
+                }
+                
+                my @SortedMethods = sort {lc($MethodInfo{2}{$a}{"Signature"}) cmp lc($MethodInfo{2}{$b}{"Signature"})} keys(%{$NameSpace_Method{$NameSpace}});
+                foreach my $Method (@SortedMethods)
+                {
+                    $Added_Number += 1;
+                    
+                    my $Signature = undef;
+                    
+                    if($In::Opt{"Compact"}) {
+                        $Signature = getSignature($Method, 2, "Full|HTML|Simple");
+                    }
+                    else {
+                        $Signature = highLight_ItalicColor($Method, 2);
+                    }
+                    
+                    if($NameSpace) {
+                        $Signature=~s/(\W|\A)\Q$NameSpace\E\.(\w)/$1$2/g;
+                    }
+                    
+                    if($In::Opt{"Compact"}) {
+                        $ADDED_METHODS .= " ".$Signature."<br/>\n";
+                    }
+                    else {
+                        $ADDED_METHODS .= insertIDs($ContentSpanStart.$Signature.$ContentSpanEnd."<br/>\n".$ContentDivStart."<span class='mngl'>".specChars($Method)."</span><br/><br/>".$ContentDivEnd."\n");
+                    }
+                }
+                
+                if($In::Opt{"Compact"}) {
+                    $ADDED_METHODS .= "</div>";
+                }
+                
+                $ADDED_METHODS .= "<br/>\n";
             }
             
-            if(defined $MInfo{"Param"}) {
-                $TypeID = $MInfo{"Param"}{$PPos}{"Type"};
-            }
         }
-        push(@Sentence_Parts, " of this$ABSTRACT_M method");
-        
-        my $Location_T = $Location;
-        $Location_T=~s/\A\w+(\.|\Z)//; # location in type
-        
-        my $TypeID_Problem = $TypeID;
-        if($Location_T) {
-            $TypeID_Problem = getFieldType($Location_T, $TypeID, 1);
+    }
+    if($ADDED_METHODS)
+    {
+        my $Anchor = "<a name='Added'></a>";
+        if($In::Opt{"JoinReport"}) {
+            $Anchor = "<a name='".$Level."_Added'></a>";
         }
-        
-        if($TypeInfo{1}{$TypeID_Problem}{"Name"} eq $Type_Name) {
-            push(@Sentence_Parts, "has type \'".htmlSpecChars($Type_Name)."\'.");
+        if($In::Opt{"OldStyle"}) {
+            $ADDED_METHODS = "<h2>Added Methods ($Added_Number)</h2><hr/>\n".$ADDED_METHODS;
         }
         else {
-            push(@Sentence_Parts, "has base type \'".htmlSpecChars($Type_Name)."\'.");
+            $ADDED_METHODS = "<h2>Added Methods <span".getStyle("M", "Added", $Added_Number)."> $Added_Number </span></h2><hr/>\n".$ADDED_METHODS;
         }
+        $ADDED_METHODS = $Anchor.$ADDED_METHODS.$TOP_REF."<br/>\n";
     }
-    return join(" ", @Sentence_Parts);
+    return $ADDED_METHODS;
 }
 
-sub getParamPos($$$)
+sub getReportRemoved($)
 {
-    my ($Name, $Method, $LibVersion) = @_;
+    if($In::Opt{"ShortMode"}) {
+        return "";
+    }
     
-    if(defined $MethodInfo{$LibVersion}{$Method}
-    and defined $MethodInfo{$LibVersion}{$Method}{"Param"})
+    my $Level = $_[0];
+    my ($REMOVED_METHODS, %MethodRemovedFromArchiveClass);
+    foreach my $Method (sort keys(%CompatProblems))
     {
-        my $Info = $MethodInfo{$LibVersion}{$Method};
-        foreach (keys(%{$Info->{"Param"}}))
+        foreach my $Kind (sort keys(%{$CompatProblems{$Method}}))
         {
-            if($Info->{"Param"}{$_}{"Name"} eq $Name)
+            if($Kind eq "Removed_Method")
             {
-                return $_;
+                if($Level eq "Source")
+                {
+                    if($ChangedReturnFromVoid{$Method}) {
+                        next;
+                    }
+                }
+                my $ArchiveName = $MethodInfo{1}{$Method}{"Archive"};
+                my $ClassName = getShortName($MethodInfo{1}{$Method}{"Class"}, 1);
+                $MethodRemovedFromArchiveClass{$ArchiveName}{$ClassName}{$Method} = 1;
             }
         }
     }
-    
-    return undef;
-}
-
-sub getParamName($)
-{
-    my $Loc = $_[0];
-    $Loc=~s/\..*//g;
-    return $Loc;
-}
-
-sub getFieldType($$$)
-{
-    my ($Location, $TypeId, $LibVersion) = @_;
-    
-    my @Fields = split(/\./, $Location);
-    
-    foreach my $Name (@Fields)
+    my $Removed_Number = 0;
+    foreach my $ArchiveName (sort {lc($a) cmp lc($b)} keys(%MethodRemovedFromArchiveClass))
     {
-        my %Info = get_BaseType($TypeId, $LibVersion);
-        
-        foreach my $N (keys(%{$Info{"Fields"}}))
+        foreach my $ClassName (sort {lc($a) cmp lc($b)} keys(%{$MethodRemovedFromArchiveClass{$ArchiveName}}))
         {
-            if($N eq $Name)
+            my %NameSpace_Method = ();
+            foreach my $Method (keys(%{$MethodRemovedFromArchiveClass{$ArchiveName}{$ClassName}}))
             {
-                $TypeId = $Info{"Fields"}{$N}{"Type"};
-                last;
+                $NameSpace_Method{$MethodInfo{1}{$Method}{"Package"}}{$Method} = 1;
+            }
+            
+            my $ShowClass = $ClassName;
+            $ShowClass=~s/<.*>//g;
+            
+            foreach my $NameSpace (sort keys(%NameSpace_Method))
+            {
+                $REMOVED_METHODS .= "<span class='jar'>$ArchiveName</span>, <span class='cname'>".specChars($ShowClass).".class</span><br/>\n";
+                
+                if($NameSpace) {
+                    $REMOVED_METHODS .= "<span class='pkg_t'>package</span> <span class='pkg'>$NameSpace</span><br/>\n";
+                }
+                
+                if($In::Opt{"Compact"}) {
+                    $REMOVED_METHODS .= "<div class='symbols'>";
+                }
+                
+                my @SortedMethods = sort {lc($MethodInfo{1}{$a}{"Signature"}) cmp lc($MethodInfo{1}{$b}{"Signature"})} keys(%{$NameSpace_Method{$NameSpace}});
+                foreach my $Method (@SortedMethods)
+                {
+                    $Removed_Number += 1;
+                    
+                    my $Signature = undef;
+                    
+                    if($In::Opt{"Compact"}) {
+                        $Signature = getSignature($Method, 1, "Full|HTML|Simple");
+                    }
+                    else {
+                        $Signature = highLight_ItalicColor($Method, 1);
+                    }
+                    
+                    if($NameSpace) {
+                        $Signature=~s/(\W|\A)\Q$NameSpace\E\.(\w)/$1$2/g;
+                    }
+                    
+                    if($In::Opt{"Compact"}) {
+                        $REMOVED_METHODS .= " ".$Signature."<br/>\n";
+                    }
+                    else {
+                        $REMOVED_METHODS .= insertIDs($ContentSpanStart.$Signature.$ContentSpanEnd."<br/>\n".$ContentDivStart."<span class='mngl'>".specChars($Method)."</span><br/><br/>".$ContentDivEnd."\n");
+                    }
+                }
+                
+                if($In::Opt{"Compact"}) {
+                    $REMOVED_METHODS .= "</div>";
+                }
+                
+                $REMOVED_METHODS .= "<br/>\n";
             }
         }
     }
-    
-    return $TypeId;
-}
-
-sub writeReport($$)
-{
-    my ($Level, $Report) = @_;
-    my $RPath = getReportPath($Level);
-    writeFile($RPath, $Report);
-}
-
-sub getRelPath($$)
-{
-    my ($A, $B) = @_;
-    return abs2rel($A, get_dirname($B));
+    if($REMOVED_METHODS)
+    {
+        my $Anchor = "<a name='Removed'></a><a name='Withdrawn'></a>";
+        if($In::Opt{"JoinReport"}) {
+            $Anchor = "<a name='".$Level."_Removed'></a><a name='".$Level."_Withdrawn'></a>";
+        }
+        if($In::Opt{"OldStyle"}) {
+            $REMOVED_METHODS = "<h2>Removed Methods ($Removed_Number)</h2><hr/>\n".$REMOVED_METHODS;
+        }
+        else {
+            $REMOVED_METHODS = "<h2>Removed Methods <span".getStyle("M", "Removed", $Removed_Number)."> $Removed_Number </span></h2><hr/>\n".$REMOVED_METHODS;
+        }
+        $REMOVED_METHODS = $Anchor.$REMOVED_METHODS.$TOP_REF."<br/>\n";
+    }
+    return $REMOVED_METHODS;
 }
 
-sub createReport()
+sub readRules($)
 {
-    if($JoinReport)
-    { # --stdout
-        writeReport("Join", getReport("Join"));
-    }
-    elsif($DoubleReport)
-    { # default
-        writeReport("Binary", getReport("Binary"));
-        writeReport("Source", getReport("Source"));
-    }
-    elsif($BinaryOnly)
-    { # --binary
-        writeReport("Binary", getReport("Binary"));
+    my $Kind = $_[0];
+    if(not -f $RULES_PATH{$Kind}) {
+        exitStatus("Module_Error", "can't access \'".$RULES_PATH{$Kind}."\'");
     }
-    elsif($SourceOnly)
-    { # --source
-        writeReport("Source", getReport("Source"));
+    my $Content = readFile($RULES_PATH{$Kind});
+    while(my $Rule = parseTag(\$Content, "rule"))
+    {
+        my $RId = parseTag(\$Rule, "id");
+        my @Properties = ("Severity", "Change", "Effect", "Overcome", "Kind");
+        foreach my $Prop (@Properties) {
+            if(my $Value = parseTag(\$Rule, lc($Prop)))
+            {
+                $Value=~s/\n[ ]*//;
+                $CompatRules{$Kind}{$RId}{$Prop} = $Value;
+            }
+        }
+        if($CompatRules{$Kind}{$RId}{"Kind"}=~/\A(Methods|Parameters)\Z/) {
+            $CompatRules{$Kind}{$RId}{"Kind"} = "Methods";
+        }
+        else { # Types, Fields
+            $CompatRules{$Kind}{$RId}{"Kind"} = "Types";
+        }
     }
 }
 
-sub getCssStyles()
+sub addMarkup($)
 {
-    my $CssStyles = "
-    body {
-        font-family:Arial, sans-serif;
-        background-color:White;
-        color:Black;
-    }
-    hr {
-        color:Black;
-        background-color:Black;
-        height:1px;
-        border:0;
-    }
-    h1 {
-        margin-bottom:0px;
-        padding-bottom:0px;
-        font-size:1.625em;
-    }
-    h2 {
-        margin-bottom:0px;
-        padding-bottom:0px;
-        font-size:1.25em;
-        white-space:nowrap;
-    }
-    div.symbols {
-        color:#003E69;
-    }
-    div.symbols i {
-        color:Brown;
-    }
-    span.section {
-        font-weight:bold;
-        cursor:pointer;
-        color:#003E69;
-        white-space:nowrap;
-        margin-left:5px;
-    }
-    span:hover.section {
-        color:#336699;
-    }
-    span.sect_aff {
-        cursor:pointer;
-        margin-left:7px;
-        padding-left:15px;
-        font-size:0.875em;
-        color:#cc3300;
-    }
-    span.ext {
-        font-weight:100;
-    }
-    span.jar {
-        color:#cc3300;
-        font-size:0.875em;
-        font-weight:bold;
-    }
-    div.jar_list {
-        padding-left:5px;
-        font-size:0.94em;
-    }
-    span.pkg_t {
-        color:#408080;
-        font-size:0.875em;
-    }
-    span.pkg {
-        color:#408080;
-        font-size:0.875em;
-        font-weight:bold;
-    }
-    span.cname {
-        color:Green;
-        font-size:0.875em;
-        font-weight:bold;
-    }
-    span.iname_b {
-        font-weight:bold;
-        font-size:1.1em;
-    }
-    span.iname_a {
-        color:#333333;
-        font-weight:bold;
-        font-size:0.94em;
-    }
-    span.sym_p {
-        font-weight:normal;
-        white-space:normal;
-    }
-    span.sym_p span {
-        white-space:nowrap;
-    }
-    span.attr {
-        color:Black;
-        font-weight:100;
-    }
-    span.deprecated {
-        color:Red;
-        font-weight:bold;
-        font-family:Monaco, monospace;
-    }
-    div.affect {
-        padding-left:15px;
-        padding-bottom:10px;
-        font-size:0.87em;
-        font-style:italic;
-        line-height:0.75em;
-    }
-    div.affected {
-        padding-left:30px;
-        padding-top:10px;
-    }
-    table.ptable {
-        border-collapse:collapse;
-        border:1px outset black;
-        line-height:1em;
-        margin-left:15px;
-        margin-top:3px;
-        margin-bottom:3px;
-        width:900px;
-    }
-    table.ptable td {
-        border:1px solid Gray;
-        padding: 3px;
-        font-size:0.875em;
-        text-align:left;
-        vertical-align:top;
-    }
-    table.ptable th {
-        background-color:#eeeeee;
-        font-weight:bold;
-        color:#333333;
-        font-family:Verdana, Arial;
-        font-size:0.875em;
-        border:1px solid Gray;
-        text-align:center;
-        vertical-align:top;
-        white-space:nowrap;
-        padding: 3px;
-    }
-    table.summary {
-        border-collapse:collapse;
-        border:1px outset black;
-    }
-    table.summary th {
-        background-color:#eeeeee;
-        font-weight:100;
-        text-align:left;
-        font-size:0.94em;
-        white-space:nowrap;
-        border:1px inset Gray;
-        padding: 3px;
-    }
-    table.summary td {
-        text-align:right;
-        white-space:nowrap;
-        border:1px inset Gray;
-        padding: 3px 5px 3px 10px;
-    }
-    span.mngl {
-        padding-left:15px;
-        font-size:0.875em;
-        cursor:text;
-        color:#444444;
-    }
-    span.color_p {
-        font-style:italic;
-        color:Brown;
-    }
-    span.param {
-        font-style:italic;
-    }
-    span.focus_p {
-        font-style:italic;
-        background-color:#DCDCDC;
-    }
-    span.nowrap {
-        white-space:nowrap;
-    }
-    .passed {
-        background-color:#CCFFCC;
-        font-weight:100;
-    }
-    .warning {
-        background-color:#F4F4AF;
-        font-weight:100;
-    }
-    .failed {
-        background-color:#FFCCCC;
-        font-weight:100;
-    }
-    .new {
-        background-color:#C6DEFF;
-        font-weight:100;
-    }
-    
-    .compatible {
-        background-color:#CCFFCC;
-        font-weight:100;
-    }
-    .almost_compatible {
-        background-color:#FFDAA3;
-        font-weight:100;
-    }
-    .incompatible {
-        background-color:#FFCCCC;
-        font-weight:100;
-    }
-    .gray {
-        background-color:#DCDCDC;
-        font-weight:100;
-    }
-    
-    .top_ref {
-        font-size:0.69em;
-    }
-    .footer {
-        font-size:0.75em;
-    }";
-    
-    if($JoinReport or $ExternCss)
-    {
-        $CssStyles .= "
-    .tabset {
-        float:left;
-    }
-    a.tab {
-        border:1px solid Black;
-        float:left;
-        margin:0px 5px -1px 0px;
-        padding:3px 5px 3px 5px;
-        position:relative;
-        font-size:0.875em;
-        background-color:#DDD;
-        text-decoration:none;
-        color:Black;
-    }
-    a.disabled:hover
-    {
-        color:Black;
-        background:#EEE;
-    }
-    a.active:hover
-    {
-        color:Black;
-        background:White;
+    my $Content = $_[0];
+    
+    # auto-markup
+    $Content=~s/\n[ ]*//; # spaces
+    $Content=~s!([2-9]\))!<br/>$1!g; # 1), 2), ...
+    if($Content=~/\ANOTE:/)
+    { # notes
+        $Content=~s!(NOTE):!<b>$1</b>:!g;
     }
-    a.active {
-        border-bottom-color:White;
-        background-color:White;
+    else {
+        $Content=~s!(NOTE):!<br/><br/><b>$1</b>:!g;
     }
-    div.tab {
-        border-top:1px solid Black;
-        padding:0px;
-        width:100%;
-        clear:both;
-    }";
+    
+    my @Keywords = (
+        "static",
+        "abstract",
+        "default",
+        "final",
+        "synchronized"
+    );
+    
+    my $MKeys = join("|", @Keywords);
+    foreach (@Keywords) {
+        $MKeys .= "|non-".$_;
     }
     
-    return $CssStyles;
+    $Content=~s!(became\s*)($MKeys)([^\w-]|\Z)!$1<b>$2</b>$3!ig; # intrinsic types, modifiers
+    
+    # Markdown
+    $Content=~s!\*\*([\w\-\@]+)\*\*!<b>$1</b>!ig;
+    $Content=~s!\*([\w\-]+)\*!<i>$1</i>!ig;
+    
+    return $Content;
 }
 
-sub getJsScript()
+sub applyMacroses($$$$$)
 {
-    my $JScripts = "
-    function sC(header, id)
+    my ($Level, $Kind, $Content, $Problem, $AddAttr) = @_;
+    
+    $Content = addMarkup($Content);
+    
+    # macros
+    foreach my $Attr (sort {$b cmp $a} (keys(%{$Problem}), keys(%{$AddAttr})))
     {
-        e = document.getElementById(id);
-        if(e.style.display == 'none')
-        {
-            e.style.display = 'block';
-            e.style.visibility = 'visible';
-            header.innerHTML = header.innerHTML.replace(/\\\[[^0-9 ]\\\]/gi,\"[−]\");
+        my $Macro = "\@".lc($Attr);
+        my $Value = undef;
+        
+        if(defined $Problem->{$Attr}) {
+            $Value = $Problem->{$Attr};
+        }
+        else {
+            $Value = $AddAttr->{$Attr};
+        }
+        
+        if(not defined $Value
+        or $Value eq "") {
+            next;
+        }
+        
+        if(index($Content, $Macro)==-1) {
+            next;
+        }
+        
+        if($Attr eq "Param_Pos") {
+            $Value = showPos($Value);
+        }
+        
+        if($Attr eq "Invoked") {
+            $Value = blackName(specChars($Value));
+        }
+        elsif($Value=~/\s/) {
+            $Value = "<span class='value'>".specChars($Value)."</span>";
         }
         else
         {
-            e.style.display = 'none';
-            e.style.visibility = 'hidden';
-            header.innerHTML = header.innerHTML.replace(/\\\[[^0-9 ]\\\]/gi,\"[+]\");
+            my $Fmt = "Class|HTML|Desc";
+            
+            if($Attr ne "Invoked_By")
+            {
+                if($Attr eq "Method_Short"
+                or $Kind!~/Overridden|Moved_Up/) {
+                    $Fmt = "HTML|Desc";
+                }
+            }
+            
+            if(defined $MethodInfo{1}{$Value}
+            and defined $MethodInfo{1}{$Value}{"ShortName"}) {
+                $Value = blackName(getSignature($Value, 1, $Fmt));
+            }
+            elsif(defined $MethodInfo{2}{$Value}
+            and defined $MethodInfo{2}{$Value}{"ShortName"}) {
+                $Value = blackName(getSignature($Value, 2, $Fmt));
+            }
+            else
+            {
+                $Value = specChars($Value);
+                if($Attr ne "Type_Type") {
+                    $Value = "<b>".$Value."</b>";
+                }
+            }
         }
-    }";
+        $Content=~s/\Q$Macro\E/$Value/g;
+    }
     
-    if($JoinReport or $ExternJs)
+    if($Content=~/(\A|[^\@\w])(\@\w+)/)
     {
-        $JScripts .= "
-    function initTabs()
+        if(not $IncompleteRules{$Level}{$Kind})
+        { # only one warning
+            printMsg("WARNING", "incomplete $2 in the rule \"$Kind\" (\"$Level\")");
+            $IncompleteRules{$Level}{$Kind} = 1;
+        }
+    }
+    
+    return $Content;
+}
+
+sub getReportMethodProblems($$)
+{
+    my ($TargetSeverity, $Level) = @_;
+    my $METHOD_PROBLEMS = "";
+    my (%ReportMap, %MethodChanges) = ();
+    
+    foreach my $Method (sort keys(%CompatProblems))
     {
-        var url = window.location.href;
-        if(url.indexOf('_Source_')!=-1 || url.indexOf('#Source')!=-1)
+        my $ArchiveName = $MethodInfo{1}{$Method}{"Archive"};
+        my $ClassName = getShortName($MethodInfo{1}{$Method}{"Class"}, 1);
+        
+        foreach my $Kind (sort keys(%{$CompatProblems{$Method}}))
         {
-            var tab1 = document.getElementById('BinaryID');
-            var tab2 = document.getElementById('SourceID');
-            tab1.className='tab disabled';
-            tab2.className='tab active';
+            if($CompatRules{$Level}{$Kind}{"Kind"} eq "Methods")
+            {
+                if($Kind eq "Added_Method"
+                or $Kind eq "Removed_Method") {
+                    next;
+                }
+                
+                if(my $Severity = $CompatRules{$Level}{$Kind}{"Severity"})
+                {
+                    if($Severity ne $TargetSeverity) {
+                        next;
+                    }
+                    
+                    $MethodChanges{$Method}{$Kind} = $CompatProblems{$Method}{$Kind};
+                    $ReportMap{$ArchiveName}{$ClassName}{$Method} = 1;
+                }
+            }
         }
-        var sets = document.getElementsByTagName('div');
-        for (var i = 0; i < sets.length; i++)
+    }
+    my $ProblemsNum = 0;
+    foreach my $ArchiveName (sort {lc($a) cmp lc($b)} keys(%ReportMap))
+    {
+        foreach my $ClassName (sort {lc($a) cmp lc($b)} keys(%{$ReportMap{$ArchiveName}}))
         {
-            if (sets[i].className.indexOf('tabset') != -1)
+            my %NameSpace_Method = ();
+            foreach my $Method (keys(%{$ReportMap{$ArchiveName}{$ClassName}})) {
+                $NameSpace_Method{$MethodInfo{1}{$Method}{"Package"}}{$Method} = 1;
+            }
+            
+            my $ShowClass = $ClassName;
+            $ShowClass=~s/<.*>//g;
+            
+            foreach my $NameSpace (sort keys(%NameSpace_Method))
             {
-                var tabs = [];
-                var links = sets[i].getElementsByTagName('a');
-                for (var j = 0; j < links.length; j++)
+                $METHOD_PROBLEMS .= "<span class='jar'>$ArchiveName</span>, <span class='cname'>".specChars($ShowClass).".class</span><br/>\n";
+                if($NameSpace) {
+                    $METHOD_PROBLEMS .= "<span class='pkg_t'>package</span> <span class='pkg'>$NameSpace</span><br/>\n";
+                }
+                
+                my @SortedMethods = sort {lc($MethodInfo{1}{$a}{"Signature"}) cmp lc($MethodInfo{1}{$b}{"Signature"})} keys(%{$NameSpace_Method{$NameSpace}});
+                foreach my $Method (@SortedMethods)
                 {
-                    if (links[j].className.indexOf('tab') != -1)
+                    my %AddAttr = ();
+                    
+                    $AddAttr{"Method_Short"} = $Method;
+                    $AddAttr{"Class"} = getTypeName($MethodInfo{1}{$Method}{"Class"}, 1);
+                    
+                    my $METHOD_REPORT = "";
+                    my $ProblemNum = 1;
+                    foreach my $Kind (sort keys(%{$MethodChanges{$Method}}))
                     {
-                        tabs.push(links[j]);
-                        links[j].tabs = tabs;
-                        var tab = document.getElementById(links[j].href.substr(links[j].href.indexOf('#') + 1));
-                        //reset all tabs on start
-                        if (tab)
+                        foreach my $Loc (sort keys(%{$MethodChanges{$Method}{$Kind}}))
                         {
-                            if (links[j].className.indexOf('active')!=-1) {
-                                tab.style.display = 'block';
-                            }
-                            else {
-                                tab.style.display = 'none';
+                            my $ProblemAttr = $MethodChanges{$Method}{$Kind}{$Loc};
+                            
+                            if(my $Change = applyMacroses($Level, $Kind, $CompatRules{$Level}{$Kind}{"Change"}, $ProblemAttr, \%AddAttr))
+                            {
+                                my $Effect = applyMacroses($Level, $Kind, $CompatRules{$Level}{$Kind}{"Effect"}, $ProblemAttr, \%AddAttr);
+                                $METHOD_REPORT .= "<tr>\n<th>$ProblemNum</th>\n<td>".$Change."</td>\n<td>".$Effect."</td>\n</tr>\n";
+                                $ProblemNum += 1;
+                                $ProblemsNum += 1;
                             }
                         }
-                        links[j].onclick = function()
+                    }
+                    $ProblemNum -= 1;
+                    if($METHOD_REPORT)
+                    {
+                        my $ShowMethod = highLight_ItalicColor($Method, 1);
+                        if($NameSpace)
                         {
-                            var tab = document.getElementById(this.href.substr(this.href.indexOf('#') + 1));
-                            if (tab)
-                            {
-                                //reset all tabs before change
-                                for (var k = 0; k < this.tabs.length; k++)
-                                {
-                                    document.getElementById(this.tabs[k].href.substr(this.tabs[k].href.indexOf('#') + 1)).style.display = 'none';
-                                    this.tabs[k].className = this.tabs[k].className.replace('active', 'disabled');
-                                }
-                                this.className = 'tab active';
-                                tab.style.display = 'block';
-                                // window.location.hash = this.id.replace('ID', '');
-                                return false;
-                            }
+                            $METHOD_REPORT = cutNs($METHOD_REPORT, $NameSpace);
+                            $ShowMethod = cutNs($ShowMethod, $NameSpace);
+                        }
+                        
+                        $METHOD_PROBLEMS .= $ContentSpanStart."<span class='ext'>[+]</span> ".$ShowMethod;
+                        if($In::Opt{"OldStyle"}) {
+                            $METHOD_PROBLEMS .= " ($ProblemNum)";
+                        }
+                        else {
+                            $METHOD_PROBLEMS .= " <span".getStyle("M", $TargetSeverity, $ProblemNum)."> $ProblemNum </span>";
+                        }
+                        $METHOD_PROBLEMS .= $ContentSpanEnd."<br/>\n";
+                        $METHOD_PROBLEMS .= $ContentDivStart;
+                        
+                        if(not $In::Opt{"Compact"}) {
+                            $METHOD_PROBLEMS .= "<span class='mngl pleft'>".specChars($Method)."</span><br/>\n";
                         }
+                        
+                        $METHOD_PROBLEMS .= "<table class='ptable'><tr><th width='2%'></th><th width='47%'>Change</th><th>Effect</th></tr>$METHOD_REPORT</table><br/>$ContentDivEnd\n";
+                        
                     }
                 }
+                
+                $METHOD_PROBLEMS .= "<br/>";
             }
         }
-        if(url.indexOf('#')!=-1) {
-            location.href=location.href;
+    }
+    if($METHOD_PROBLEMS)
+    {
+        $METHOD_PROBLEMS = insertIDs($METHOD_PROBLEMS);
+        
+        my $Title = "Problems with Methods, $TargetSeverity Severity";
+        if($TargetSeverity eq "Safe")
+        { # Safe Changes
+            $Title = "Other Changes in Methods";
+        }
+        if($In::Opt{"OldStyle"}) {
+            $METHOD_PROBLEMS = "<h2>$Title ($ProblemsNum)</h2><hr/>\n".$METHOD_PROBLEMS;
+        }
+        else {
+            $METHOD_PROBLEMS = "<h2>$Title <span".getStyle("M", $TargetSeverity, $ProblemsNum)."> $ProblemsNum </span></h2><hr/>\n".$METHOD_PROBLEMS;
         }
+        $METHOD_PROBLEMS = "<a name='".getAnchor("Method", $Level, $TargetSeverity)."'></a>\n".$METHOD_PROBLEMS;
+        $METHOD_PROBLEMS .= $TOP_REF."<br/>\n";
+    }
+    return $METHOD_PROBLEMS;
+}
+
+sub showType($$$)
+{
+    my ($Name, $Html, $LVer) = @_;
+    my $TType = $TypeInfo{$LVer}{$TName_Tid{$LVer}{$Name}}{"Type"};
+    if($Html) {
+        $Name = "<span class='ttype'>".$TType."</span> ".specChars($Name);
     }
-    if (window.addEventListener) window.addEventListener('load', initTabs, false);
-    else if (window.attachEvent) window.attachEvent('onload', initTabs);";
+    else {
+        $Name = $TType." ".$Name;
     }
-    
-    return $JScripts;
+    return $Name;
 }
 
-sub getReport($)
+sub getReportTypeProblems($$)
 {
-    my $Level = $_[0];
-    
-    my $CssStyles = getCssStyles();
-    my $JScripts = getJsScript();
+    my ($TargetSeverity, $Level) = @_;
+    my $TYPE_PROBLEMS = "";
     
-    if(defined $ExternCss)
-    {
-        $CssStyles=~s/\n    /\n/g;
-        writeFile($ExternCss, $CssStyles);
-    }
+    my %ReportMap = ();
+    my %TypeChanges_Sev = ();
     
-    if(defined $ExternJs)
+    foreach my $TypeName (keys(%{$TypeChanges{$Level}}))
     {
-        $JScripts=~s/\n    /\n/g;
-        writeFile($ExternJs, $JScripts);
+        my $ArchiveName = $TypeInfo{1}{$TName_Tid{1}{$TypeName}}{"Archive"};
+        
+        foreach my $Kind (keys(%{$TypeChanges{$Level}{$TypeName}}))
+        {
+            if($CompatRules{$Level}{$Kind}{"Severity"} ne $TargetSeverity) {
+                next;
+            }
+            
+            foreach my $Loc (keys(%{$TypeChanges{$Level}{$TypeName}{$Kind}}))
+            {
+                $ReportMap{$ArchiveName}{$TypeName} = 1;
+                $TypeChanges_Sev{$TypeName}{$Kind}{$Loc} = $TypeChanges{$Level}{$TypeName}{$Kind}{$Loc};
+            }
+        }
     }
     
-    if($Level eq "Join")
+    my $ProblemsNum = 0;
+    foreach my $ArchiveName (sort {lc($a) cmp lc($b)} keys(%ReportMap))
     {
-        my $Title = "$TargetTitle: ".$Descriptor{1}{"Version"}." to ".$Descriptor{2}{"Version"}." compatibility report";
-        my $Keywords = "$TargetTitle, compatibility";
-        my $Description = "Compatibility report for the $TargetTitle library between ".$Descriptor{1}{"Version"}." and ".$Descriptor{2}{"Version"}." versions";
-        my ($BSummary, $BMetaData) = get_Summary("Binary");
-        my ($SSummary, $SMetaData) = get_Summary("Source");
-        my $Report = "<!-\- $BMetaData -\->\n<!-\- $SMetaData -\->\n".composeHTML_Head($Level, $Title, $Keywords, $Description, $CssStyles, $JScripts)."<body><a name='Source'></a><a name='Binary'></a><a name='Top'></a>";
-        $Report .= get_Report_Header("Join")."
-        <br/><div class='tabset'>
-        <a id='BinaryID' href='#BinaryTab' class='tab active'>Binary<br/>Compatibility</a>
-        <a id='SourceID' href='#SourceTab' style='margin-left:3px' class='tab disabled'>Source<br/>Compatibility</a>
-        </div>";
-        $Report .= "<div id='BinaryTab' class='tab'>\n$BSummary\n".get_Report_Added("Binary").get_Report_Removed("Binary").get_Report_Problems("High", "Binary").get_Report_Problems("Medium", "Binary").get_Report_Problems("Low", "Binary").get_Report_Problems("Safe", "Binary").get_SourceInfo()."<br/><br/><br/></div>";
-        $Report .= "<div id='SourceTab' class='tab'>\n$SSummary\n".get_Report_Added("Source").get_Report_Removed("Source").get_Report_Problems("High", "Source").get_Report_Problems("Medium", "Source").get_Report_Problems("Low", "Source").get_Report_Problems("Safe", "Source").get_SourceInfo()."<br/><br/><br/></div>";
-        $Report .= getReportFooter();
-        $Report .= "\n</body></html>";
-        return $Report;
+        my %NameSpace_Type = ();
+        foreach my $TypeName (keys(%{$ReportMap{$ArchiveName}})) {
+            $NameSpace_Type{$TypeInfo{1}{$TName_Tid{1}{$TypeName}}{"Package"}}{$TypeName} = 1;
+        }
+        foreach my $NameSpace (sort keys(%NameSpace_Type))
+        {
+            $TYPE_PROBLEMS .= "<span class='jar'>$ArchiveName</span><br/>\n";
+            if($NameSpace) {
+                $TYPE_PROBLEMS .= "<span class='pkg_t'>package</span> <span class='pkg'>".$NameSpace."</span><br/>\n";
+            }
+            
+            my @SortedTypes = sort {lc(showType($a, 0, 1)) cmp lc(showType($b, 0, 1))} keys(%{$NameSpace_Type{$NameSpace}});
+            foreach my $TypeName (@SortedTypes)
+            {
+                my $TypeId = $TName_Tid{1}{$TypeName};
+                
+                my $ProblemNum = 1;
+                my $TYPE_REPORT = "";
+                my (%Kinds_Locations, %Kinds_Target) = ();
+                
+                foreach my $Kind (sort keys(%{$TypeChanges_Sev{$TypeName}}))
+                {
+                    foreach my $Location (sort keys(%{$TypeChanges_Sev{$TypeName}{$Kind}}))
+                    {
+                        $Kinds_Locations{$Kind}{$Location} = 1;
+                        
+                        my $Target = $TypeChanges_Sev{$TypeName}{$Kind}{$Location}{"Target"};
+                        if($Kinds_Target{$Kind}{$Target}) {
+                            next;
+                        }
+                        $Kinds_Target{$Kind}{$Target} = 1;
+                        
+                        my %AddAttr = ();
+                        
+                        if($Kind=~/Method/)
+                        {
+                            if(defined $MethodInfo{1}{$Target} and $MethodInfo{1}{$Target}{"Name"})
+                            {
+                                $AddAttr{"Method_Short"} = $Target;
+                                $AddAttr{"Class"} = getTypeName($MethodInfo{1}{$Target}{"Class"}, 1);
+                            }
+                            elsif(defined $MethodInfo{2}{$Target} and $MethodInfo{2}{$Target}{"Name"})
+                            {
+                                $AddAttr{"Method_Short"} = $Target;
+                                $AddAttr{"Class"} = getTypeName($MethodInfo{2}{$Target}{"Class"}, 2);
+                            }
+                        }
+                        
+                        my $ProblemAttr = $TypeChanges_Sev{$TypeName}{$Kind}{$Location};
+                        
+                        if(my $Change = applyMacroses($Level, $Kind, $CompatRules{$Level}{$Kind}{"Change"}, $ProblemAttr, \%AddAttr))
+                        {
+                            my $Effect = applyMacroses($Level, $Kind, $CompatRules{$Level}{$Kind}{"Effect"}, $ProblemAttr, \%AddAttr);
+                            
+                            $TYPE_REPORT .= "<tr>\n<th>$ProblemNum</th>\n<td>".$Change."</td>\n<td>".$Effect."</td>\n</tr>\n";
+                            $ProblemNum += 1;
+                            $ProblemsNum += 1;
+                        }
+                    }
+                }
+                $ProblemNum -= 1;
+                if($TYPE_REPORT)
+                {
+                    my $Affected = "";
+                    if(not defined $TypeInfo{1}{$TypeId}{"Annotation"}) {
+                        $Affected = getAffectedMethods($Level, $TypeName, \%Kinds_Locations);
+                    }
+                    
+                    my $ShowType = showType($TypeName, 1, 1);
+                    if($NameSpace)
+                    {
+                        $TYPE_REPORT = cutNs($TYPE_REPORT, $NameSpace);
+                        $ShowType = cutNs($ShowType, $NameSpace);
+                        $Affected = cutNs($Affected, $NameSpace);
+                    }
+                    
+                    $TYPE_PROBLEMS .= $ContentSpanStart."<span class='ext'>[+]</span> ".$ShowType;
+                    if($In::Opt{"OldStyle"}) {
+                        $TYPE_PROBLEMS .= " ($ProblemNum)";
+                    }
+                    else {
+                        $TYPE_PROBLEMS .= " <span".getStyle("T", $TargetSeverity, $ProblemNum)."> $ProblemNum </span>";
+                    }
+                    $TYPE_PROBLEMS .= $ContentSpanEnd."<br/>\n";
+                    $TYPE_PROBLEMS .= $ContentDivStart."<table class='ptable'><tr>";
+                    $TYPE_PROBLEMS .= "<th width='2%'></th><th width='47%'>Change</th><th>Effect</th>";
+                    $TYPE_PROBLEMS .= "</tr>$TYPE_REPORT</table>".$Affected."<br/><br/>$ContentDivEnd\n";
+                }
+            }
+            
+            $TYPE_PROBLEMS .= "<br/>";
+        }
     }
-    else
+    if($TYPE_PROBLEMS)
     {
-        my ($Summary, $MetaData) = get_Summary($Level);
-        my $Title = "$TargetTitle: ".$Descriptor{1}{"Version"}." to ".$Descriptor{2}{"Version"}." ".lc($Level)." compatibility report";
-        my $Keywords = "$TargetTitle, ".lc($Level).", compatibility";
-        my $Description = "$Level compatibility report for the $TargetTitle library between ".$Descriptor{1}{"Version"}." and ".$Descriptor{2}{"Version"}." versions";
+        $TYPE_PROBLEMS = insertIDs($TYPE_PROBLEMS);
         
-        my $Report = "<!-\- $MetaData -\->\n".composeHTML_Head($Level, $Title, $Keywords, $Description, $CssStyles, $JScripts)."<body><a name='Top'></a>";
-        $Report .= get_Report_Header($Level)."\n".$Summary."\n";
-        $Report .= get_Report_Added($Level).get_Report_Removed($Level);
-        $Report .= get_Report_Problems("High", $Level).get_Report_Problems("Medium", $Level).get_Report_Problems("Low", $Level).get_Report_Problems("Safe", $Level);
-        $Report .= get_SourceInfo()."<br/><br/><br/>\n";
-        $Report .= getReportFooter();
-        $Report .= "\n</body></html>";
-        return $Report;
+        my $Title = "Problems with Data Types, $TargetSeverity Severity";
+        if($TargetSeverity eq "Safe")
+        { # Safe Changes
+            $Title = "Other Changes in Data Types";
+        }
+        if($In::Opt{"OldStyle"}) {
+            $TYPE_PROBLEMS = "<h2>$Title ($ProblemsNum)</h2><hr/>\n".$TYPE_PROBLEMS;
+        }
+        else {
+            $TYPE_PROBLEMS = "<h2>$Title <span".getStyle("T", $TargetSeverity, $ProblemsNum)."> $ProblemsNum </span></h2><hr/>\n".$TYPE_PROBLEMS;
+        }
+        $TYPE_PROBLEMS = "<a name='".getAnchor("Type", $Level, $TargetSeverity)."'></a>\n".$TYPE_PROBLEMS;
+        $TYPE_PROBLEMS .= $TOP_REF."<br/>\n";
     }
+    return $TYPE_PROBLEMS;
 }
 
-sub getReportFooter()
+sub cutNs($$)
 {
-    my $Footer = "";
-    $Footer .= "<hr/>";
-    $Footer .= "<div class='footer' align='right'><i>Generated by ";
-    $Footer .= "<a href='".$HomePage{"Dev"}."'>Java API Compliance Checker</a> $TOOL_VERSION  ";
-    $Footer .= "</i></div>";
-    $Footer .= "<br/>";
-    return $Footer;
+    my ($N, $Ns) = @_;
+    $N=~s/(\W|\A)\Q$Ns\E\.(\w)/$1$2/g;
+    return $N;
 }
 
-sub get_Report_Problems($$)
+sub getAffectedMethods($$$)
 {
-    my ($Priority, $Level) = @_;
-    my $Report = get_Report_TypeProblems($Priority, $Level);
-    if(my $MProblems = get_Report_MethodProblems($Priority, $Level)) {
-        $Report .= $MProblems;
+    my ($Level, $Target_TypeName, $Kinds_Locations) = @_;
+    
+    my $LIMIT = 10;
+    if(defined $In::Opt{"AffectLimit"}) {
+        $LIMIT = $In::Opt{"AffectLimit"};
     }
-    if($Report)
+    
+    my %SymSel = ();
+    
+    foreach my $Kind (sort keys(%{$Kinds_Locations}))
     {
-        if($JoinReport)
-        {
-            if($Priority eq "Safe") {
-                $Report = "<a name=\'Other_".$Level."_Changes\'></a>".$Report;
-            }
-            else {
-                $Report = "<a name=\'".$Priority."_Risk_".$Level."_Problems\'></a>".$Report;
-            }
-        }
-        else
+        my @Locs = sort {(index($a, "retval")!=-1) cmp (index($b, "retval")!=-1)} sort {length($a)<=>length($b)} sort keys(%{$Kinds_Locations->{$Kind}});
+        
+        foreach my $Loc (@Locs)
         {
-            if($Priority eq "Safe") {
-                $Report = "<a name=\'Other_Changes\'></a>".$Report;
-            }
-            else {
-                $Report = "<a name=\'".$Priority."_Risk_Problems\'></a>".$Report;
+            foreach my $Method (keys(%{$TypeProblemsIndex{$Level}{$Target_TypeName}{$Kind}{$Loc}}))
+            {
+                if($Method eq ".client_method") {
+                    next;
+                }
+                
+                if(not defined $SymSel{$Method})
+                {
+                    $SymSel{$Method}{"Kind"} = $Kind;
+                    $SymSel{$Method}{"Loc"} = $Loc;
+                }
             }
         }
     }
-    return $Report;
-}
-
-sub composeHTML_Head($$$$$$)
-{
-    my ($Level, $Title, $Keywords, $Description, $Styles, $Scripts) = @_;
-    
-    my $Head = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
-    $Head .= "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n";
-    $Head .= "<head>\n";
-    $Head .= "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n";
-    $Head .= "<meta name=\"keywords\" content=\"$Keywords\" />\n";
-    $Head .= "<meta name=\"description\" content=\"$Description\" />\n";
-    
-    my $RPath = getReportPath($Level);
-    
-    if(defined $ExternCss) {
-        $Head .= "<link rel=\"stylesheet\" type=\"text/css\" href=\"".getRelPath($ExternCss, $RPath)."\" />\n";
-    }
-    
-    if(defined $ExternJs) {
-        $Head .= "<script type=\"text/javascript\" src=\"".getRelPath($ExternJs, $RPath)."\"></script>\n";
-    }
-    
-    $Head .= "<title>$Title</title>\n";
     
-    if(not defined $ExternCss) {
-        $Head .= "<style type=\"text/css\">\n$Styles\n</style>\n";
-    }
+    my $Total = keys(%SymSel);
     
-    if(not defined $ExternJs) {
-        $Head .= "<script type=\"text/javascript\" language=\"JavaScript\">\n<!--\n$Scripts\n-->\n</script>\n";
+    if(not $Total) {
+        return "";
     }
     
-    $Head .= "</head>\n";
-    
-    $Head=~s/\n    /\n/g;
+    my $Affected = "";
+    my $SNum = 0;
     
-    return $Head;
-}
-
-sub insertIDs($)
-{
-    my $Text = $_[0];
-    while($Text=~/CONTENT_ID/)
+    foreach my $Method (sort {lc($a) cmp lc($b)} keys(%SymSel))
     {
-        if(int($Content_Counter)%2)
-        {
-            $ContentID -= 1;
+        my $Kind = $SymSel{$Method}{"Kind"};
+        my $Loc = $SymSel{$Method}{"Loc"};
+        
+        my $Desc = getAffectDesc($Method, $Kind, $Loc, $Level);
+        my $PName = getParamName($Loc);
+        my $Pos = getParamPos($PName, $Method, 1);
+        
+        $Affected .= "<span class='iname_a'>".getSignature($Method, 1, "HTML|Italic|Param|Class|Target=".$Pos)."</span><br/>";
+        $Affected .= "<div class='affect'>".$Desc."</div>\n";
+        
+        if(++$SNum>=$LIMIT) {
+            last;
         }
-        $Text=~s/CONTENT_ID/c_$ContentID/;
-        $ContentID += 1;
-        $Content_Counter += 1;
-    }
-    return $Text;
-}
-
-sub readArchives($)
-{
-    my $LibVersion = $_[0];
-    my @ArchivePaths = getArchives($LibVersion);
-    if($#ArchivePaths==-1) {
-        exitStatus("Error", "Java ARchives are not found in ".$Descriptor{$LibVersion}{"Version"});
     }
-    printMsg("INFO", "reading classes ".$Descriptor{$LibVersion}{"Version"}." ...");
-    $TYPE_ID = 0;
     
-    foreach my $ArchivePath (sort {length($a)<=>length($b)} @ArchivePaths) {
-        readArchive($LibVersion, $ArchivePath);
-    }
-    foreach my $TName (keys(%{$TName_Tid{$LibVersion}}))
-    {
-        my $Tid = $TName_Tid{$LibVersion}{$TName};
-        if(not $TypeInfo{$LibVersion}{$Tid}{"Type"})
-        {
-            if($TName=~/\A(void|boolean|char|byte|short|int|float|long|double)\Z/) {
-                $TypeInfo{$LibVersion}{$Tid}{"Type"} = "primitive";
-            }
-            else {
-                $TypeInfo{$LibVersion}{$Tid}{"Type"} = "class";
-            }
-        }
+    if($Total>$LIMIT) {
+        $Affected .= " <b>...</b>\n<br/>\n"; # and others ...
     }
     
-    foreach my $Method (keys(%{$MethodInfo{$LibVersion}}))
+    $Affected = "<div class='affected'>".$Affected."</div>";
+    if($Affected)
     {
-        $MethodInfo{$LibVersion}{$Method}{"Signature"} = get_Signature($Method, $LibVersion, "Full");
-        $tr_name{$Method} = get_TypeName($MethodInfo{$LibVersion}{$Method}{"Class"}, $LibVersion).".".get_Signature($Method, $LibVersion, "Short");
+        my $Per = showNum($Total*100/keys(%CheckedMethods));
+        $Affected =  $ContentDivStart.$Affected.$ContentDivEnd;
+        $Affected =  $ContentSpanStart_Affected."[+] affected methods: $Total ($Per\%)".$ContentSpanEnd.$Affected;
     }
+    
+    return $Affected;
 }
 
-sub testSystem()
+sub getAffectDesc($$$$)
 {
-    printMsg("INFO", "\nverifying detectable Java library changes");
-    
-    my $LibName = "libsample_java";
-    if(-d $LibName) {
-        rmtree($LibName);
-    }
-    
-    my $PackageName = "TestPackage";
-    my $Path_v1 = "$LibName/$PackageName.v1/$PackageName";
-    mkpath($Path_v1);
-    
-    my $Path_v2 = "$LibName/$PackageName.v2/$PackageName";
-    mkpath($Path_v2);
-    
-    my $TestsPath = "$LibName/Tests";
-    mkpath($TestsPath);
-    
-    # FirstCheckedException
-    my $FirstCheckedException = "package $PackageName;
-    public class FirstCheckedException extends Exception {
-    }";
-    writeFile($Path_v1."/FirstCheckedException.java", $FirstCheckedException);
-    writeFile($Path_v2."/FirstCheckedException.java", $FirstCheckedException);
-    
-    # SecondCheckedException
-    my $SecondCheckedException = "package $PackageName;
-    public class SecondCheckedException extends Exception {
-    }";
-    writeFile($Path_v1."/SecondCheckedException.java", $SecondCheckedException);
-    writeFile($Path_v2."/SecondCheckedException.java", $SecondCheckedException);
-    
-    # FirstUncheckedException
-    my $FirstUncheckedException = "package $PackageName;
-    public class FirstUncheckedException extends RuntimeException {
-    }";
-    writeFile($Path_v1."/FirstUncheckedException.java", $FirstUncheckedException);
-    writeFile($Path_v2."/FirstUncheckedException.java", $FirstUncheckedException);
-    
-    # SecondUncheckedException
-    my $SecondUncheckedException = "package $PackageName;
-    public class SecondUncheckedException extends RuntimeException {
-    }";
-    writeFile($Path_v1."/SecondUncheckedException.java", $SecondUncheckedException);
-    writeFile($Path_v2."/SecondUncheckedException.java", $SecondUncheckedException);
-    
-    # BaseAbstractClass
-    my $BaseAbstractClass = "package $PackageName;
-    public abstract class BaseAbstractClass {
-        public Integer field;
-        public Integer someMethod(Integer param) { return param; }
-        public abstract Integer abstractMethod(Integer param);
-    }";
-    writeFile($Path_v1."/BaseAbstractClass.java", $BaseAbstractClass);
-    writeFile($Path_v2."/BaseAbstractClass.java", $BaseAbstractClass);
-    
-    # Removed_Annotation
-    writeFile($Path_v1."/RemovedAnnotation.java",
-    "package $PackageName;
-    public \@interface RemovedAnnotation {
-    }");
-    
-    # Beta Annotation
-    writeFile($Path_v1."/Beta.java",
-    "package $PackageName;
-    public \@interface Beta {
-    }");
-    
-    writeFile($Path_v2."/Beta.java",
-    "package $PackageName;
-    public \@interface Beta {
-    }");
-    
-    # BaseClass
-    my $BaseClass = "package $PackageName;
-    public class BaseClass {
-        public Integer field;
-        public Integer method(Integer param) { return param; }
-    }";
-    writeFile($Path_v1."/BaseClass.java", $BaseClass);
-    writeFile($Path_v2."/BaseClass.java", $BaseClass);
-    
-    # BaseClass2
-    my $BaseClass2 = "package $PackageName;
-    public class BaseClass2 {
-        public Integer field2;
-        public Integer method2(Integer param) { return param; }
-    }";
-    writeFile($Path_v1."/BaseClass2.java", $BaseClass2);
-    writeFile($Path_v2."/BaseClass2.java", $BaseClass2);
-    
-    # BaseInterface
-    my $BaseInterface = "package $PackageName;
-    public interface BaseInterface {
-        public Integer field = 100;
-        public Integer method(Integer param);
-    }";
-    writeFile($Path_v1."/BaseInterface.java", $BaseInterface);
-    writeFile($Path_v2."/BaseInterface.java", $BaseInterface);
-    
-    # BaseInterface2
-    my $BaseInterface2 = "package $PackageName;
-    public interface BaseInterface2 {
-        public Integer field2 = 100;
-        public Integer method2(Integer param);
-    }";
-    writeFile($Path_v1."/BaseInterface2.java", $BaseInterface2);
-    writeFile($Path_v2."/BaseInterface2.java", $BaseInterface2);
-    
-    # BaseConstantInterface
-    my $BaseConstantInterface = "package $PackageName;
-    public interface BaseConstantInterface {
-        public Integer CONSTANT = 10;
-        public Integer CONSTANT2 = 100;
-    }";
-    writeFile($Path_v1."/BaseConstantInterface.java", $BaseConstantInterface);
-    writeFile($Path_v2."/BaseConstantInterface.java", $BaseConstantInterface);
-    
-    # Removed_Method (Beta method)
-    writeFile($Path_v1."/RemovedBetaMethod.java",
-    "package $PackageName;
-    public class RemovedBetaMethod
-    {
-        \@Beta
-        public Integer someMethod() {
-            return 0;
-        }
-    }");
-    writeFile($Path_v2."/RemovedBetaMethod.java",
-    "package $PackageName;
-    public class RemovedBetaMethod {
-    }");
-    
-    # Removed_Method (from Beta class)
-    writeFile($Path_v1."/RemovedMethodFromBetaClass.java",
-    "package $PackageName;
-    \@Beta
-    public class RemovedMethodFromBetaClass
-    {
-        public Integer someMethod() {
-            return 0;
-        }
-    }");
-    writeFile($Path_v2."/RemovedMethodFromBetaClass.java",
-    "package $PackageName;
-    \@Beta
-    public class RemovedMethodFromBetaClass {
-    }");
-    
-    # Removed_Class (Beta)
-    writeFile($Path_v1."/RemovedBetaClass.java",
-    "package $PackageName;
-    \@Beta
-    public class RemovedBetaClass
-    {
-        public Integer someMethod() {
-            return 0;
-        }
-    }");
-    
-    # Abstract_Method_Added_Checked_Exception
-    writeFile($Path_v1."/AbstractMethodAddedCheckedException.java",
-    "package $PackageName;
-    public abstract class AbstractMethodAddedCheckedException {
-        public abstract Integer someMethod() throws FirstCheckedException;
-    }");
-    writeFile($Path_v2."/AbstractMethodAddedCheckedException.java",
-    "package $PackageName;
-    public abstract class AbstractMethodAddedCheckedException {
-        public abstract Integer someMethod() throws FirstCheckedException, SecondCheckedException;
-    }");
-    
-    # Abstract_Method_Removed_Checked_Exception
-    writeFile($Path_v1."/AbstractMethodRemovedCheckedException.java",
-    "package $PackageName;
-    public abstract class AbstractMethodRemovedCheckedException {
-        public abstract Integer someMethod() throws FirstCheckedException, SecondCheckedException;
-    }");
-    writeFile($Path_v2."/AbstractMethodRemovedCheckedException.java",
-    "package $PackageName;
-    public abstract class AbstractMethodRemovedCheckedException {
-        public abstract Integer someMethod() throws FirstCheckedException;
-    }");
-    
-    # NonAbstract_Method_Added_Checked_Exception
-    writeFile($Path_v1."/NonAbstractMethodAddedCheckedException.java",
-    "package $PackageName;
-    public class NonAbstractMethodAddedCheckedException {
-        public Integer someMethod() throws FirstCheckedException {
-            return 10;
-        }
-    }");
-    writeFile($Path_v2."/NonAbstractMethodAddedCheckedException.java",
-    "package $PackageName;
-    public class NonAbstractMethodAddedCheckedException {
-        public Integer someMethod() throws FirstCheckedException, SecondCheckedException {
-            return 10;
-        }
-    }");
-    
-    # NonAbstract_Method_Removed_Checked_Exception
-    writeFile($Path_v1."/NonAbstractMethodRemovedCheckedException.java",
-    "package $PackageName;
-    public class NonAbstractMethodRemovedCheckedException {
-        public Integer someMethod() throws FirstCheckedException, SecondCheckedException {
-            return 10;
-        }
-    }");
-    writeFile($Path_v2."/NonAbstractMethodRemovedCheckedException.java",
-    "package $PackageName;
-    public class NonAbstractMethodRemovedCheckedException {
-        public Integer someMethod() throws FirstCheckedException {
-            return 10;
-        }
-    }");
-    
-    # Added_Unchecked_Exception
-    writeFile($Path_v1."/AddedUncheckedException.java",
-    "package $PackageName;
-    public class AddedUncheckedException {
-        public Integer someMethod() throws FirstUncheckedException {
-            return 10;
-        }
-    }");
-    writeFile($Path_v2."/AddedUncheckedException.java",
-    "package $PackageName;
-    public class AddedUncheckedException {
-        public Integer someMethod() throws FirstUncheckedException, SecondUncheckedException, NullPointerException {
-            return 10;
-        }
-    }");
-    
-    # Removed_Unchecked_Exception
-    writeFile($Path_v1."/RemovedUncheckedException.java",
-    "package $PackageName;
-    public class RemovedUncheckedException {
-        public Integer someMethod() throws FirstUncheckedException, SecondUncheckedException, NullPointerException {
-            return 10;
-        }
-    }");
-    writeFile($Path_v2."/RemovedUncheckedException.java",
-    "package $PackageName;
-    public class RemovedUncheckedException {
-        public Integer someMethod() throws FirstUncheckedException {
-            return 10;
-        }
-    }");
-    
-    # Changed_Method_Return_From_Void
-    writeFile($Path_v1."/ChangedMethodReturnFromVoid.java",
-    "package $PackageName;
-    public class ChangedMethodReturnFromVoid {
-        public void changedMethod(Integer param1, String[] param2) { }
-    }");
-    writeFile($Path_v2."/ChangedMethodReturnFromVoid.java",
-    "package $PackageName;
-    public class ChangedMethodReturnFromVoid {
-        public Integer changedMethod(Integer param1, String[] param2){
-            return param1;
-        }
-    }");
-    
-    # Added_Method
-    writeFile($Path_v1."/AddedMethod.java",
-    "package $PackageName;
-    public class AddedMethod {
-        public Integer field = 100;
-    }");
-    writeFile($Path_v2."/AddedMethod.java",
-    "package $PackageName;
-    public class AddedMethod {
-        public Integer field = 100;
-        public Integer addedMethod(Integer param1, String[] param2) { return param1; }
-        public static String[] addedStaticMethod(String[] param) { return param; }
-    }");
-    
-    # Added_Method (Constructor)
-    writeFile($Path_v1."/AddedConstructor.java",
-    "package $PackageName;
-    public class AddedConstructor {
-        public Integer field = 100;
-    }");
-    writeFile($Path_v2."/AddedConstructor.java",
-    "package $PackageName;
-    public class AddedConstructor {
-        public Integer field = 100;
-        public AddedConstructor() { }
-        public AddedConstructor(Integer x, String y) { }
-    }");
-    
-    # Class_Added_Field
-    writeFile($Path_v1."/ClassAddedField.java",
-    "package $PackageName;
-    public class ClassAddedField {
-        public Integer otherField;
-    }");
-    writeFile($Path_v2."/ClassAddedField.java",
-    "package $PackageName;
-    public class ClassAddedField {
-        public Integer addedField;
-        public Integer otherField;
-    }");
-    
-    # Interface_Added_Field
-    writeFile($Path_v1."/InterfaceAddedField.java",
-    "package $PackageName;
-    public interface InterfaceAddedField {
-        public Integer method();
-    }");
-    writeFile($Path_v2."/InterfaceAddedField.java",
-    "package $PackageName;
-    public interface InterfaceAddedField {
-        public Integer addedField = 100;
-        public Integer method();
-    }");
-    
-    # Removed_NonConstant_Field (Class)
-    writeFile($Path_v1."/ClassRemovedField.java",
-    "package $PackageName;
-    public class ClassRemovedField {
-        public Integer removedField;
-        public Integer otherField;
-    }");
-    writeFile($Path_v2."/ClassRemovedField.java",
-    "package $PackageName;
-    public class ClassRemovedField {
-        public Integer otherField;
-    }");
-    
-    writeFile($TestsPath."/Test_ClassRemovedField.java",
-    "import $PackageName.*;
-    public class Test_ClassRemovedField {
-        public static void main(String[] args) {
-            ClassRemovedField X = new ClassRemovedField();
-            Integer Copy = X.removedField;
-        }
-    }");
-    
-    writeFile($TestsPath."/Test_RemovedAnnotation.java",
-    "import $PackageName.*;
-    public class Test_RemovedAnnotation {
-        public static void main(String[] args) {
-            testMethod();
-        }
-        
-        \@RemovedAnnotation
-        static void testMethod() {
-        }
-    }");
-    
-    # Removed_Constant_Field (Interface)
-    writeFile($Path_v1."/InterfaceRemovedConstantField.java",
-    "package $PackageName;
-    public interface InterfaceRemovedConstantField {
-        public String someMethod();
-        public int removedField_Int = 1000;
-        public String removedField_Str = \"Value\";
-    }");
-    writeFile($Path_v2."/InterfaceRemovedConstantField.java",
-    "package $PackageName;
-    public interface InterfaceRemovedConstantField {
-        public String someMethod();
-    }");
-    
-    # Removed_NonConstant_Field (Interface)
-    writeFile($Path_v1."/InterfaceRemovedField.java",
-    "package $PackageName;
-    public interface InterfaceRemovedField {
-        public String someMethod();
-        public BaseClass removedField = new BaseClass();
-    }");
-    writeFile($Path_v2."/InterfaceRemovedField.java",
-    "package $PackageName;
-    public interface InterfaceRemovedField {
-        public String someMethod();
-    }");
-    
-    # Renamed_Field
-    writeFile($Path_v1."/RenamedField.java",
-    "package $PackageName;
-    public class RenamedField {
-        public String oldName;
-    }");
-    writeFile($Path_v2."/RenamedField.java",
-    "package $PackageName;
-    public class RenamedField {
-        public String newName;
-    }");
-    
-    # Renamed_Constant_Field
-    writeFile($Path_v1."/RenamedConstantField.java",
-    "package $PackageName;
-    public class RenamedConstantField {
-        public final String oldName = \"Value\";
-    }");
-    writeFile($Path_v2."/RenamedConstantField.java",
-    "package $PackageName;
-    public class RenamedConstantField {
-        public final String newName = \"Value\";
-    }");
-    
-    # Changed_Field_Type
-    writeFile($Path_v1."/ChangedFieldType.java",
-    "package $PackageName;
-    public class ChangedFieldType {
-        public String fieldName;
-    }");
-    writeFile($Path_v2."/ChangedFieldType.java",
-    "package $PackageName;
-    public class ChangedFieldType {
-        public Integer fieldName;
-    }");
-    
-    # Changed_Field_Access
-    writeFile($Path_v1."/ChangedFieldAccess.java",
-    "package $PackageName;
-    public class ChangedFieldAccess {
-        public String fieldName;
-    }");
-    writeFile($Path_v2."/ChangedFieldAccess.java",
-    "package $PackageName;
-    public class ChangedFieldAccess {
-        private String fieldName;
-    }");
-    
-    # Changed_Final_Field_Value
-    writeFile($Path_v1."/ChangedFinalFieldValue.java",
-    "package $PackageName;
-    public class ChangedFinalFieldValue {
-        public final int field = 1;
-        public final String field2 = \" \";
-    }");
-    writeFile($Path_v2."/ChangedFinalFieldValue.java",
-    "package $PackageName;
-    public class ChangedFinalFieldValue {
-        public final int field = 2;
-        public final String field2 = \"newValue\";
-    }");
-    
-    # NonConstant_Field_Became_Static
-    writeFile($Path_v1."/NonConstantFieldBecameStatic.java",
-    "package $PackageName;
-    public class NonConstantFieldBecameStatic {
-        public String fieldName;
-    }");
-    writeFile($Path_v2."/NonConstantFieldBecameStatic.java",
-    "package $PackageName;
-    public class NonConstantFieldBecameStatic {
-        public static String fieldName;
-    }");
-    
-    # NonConstant_Field_Became_NonStatic
-    writeFile($Path_v1."/NonConstantFieldBecameNonStatic.java",
-    "package $PackageName;
-    public class NonConstantFieldBecameNonStatic {
-        public static String fieldName;
-    }");
-    writeFile($Path_v2."/NonConstantFieldBecameNonStatic.java",
-    "package $PackageName;
-    public class NonConstantFieldBecameNonStatic {
-        public String fieldName;
-    }");
-    
-    # Constant_Field_Became_NonStatic
-    writeFile($Path_v1."/ConstantFieldBecameNonStatic.java",
-    "package $PackageName;
-    public class ConstantFieldBecameNonStatic {
-        public final static String fieldName = \"Value\";
-    }");
-    writeFile($Path_v2."/ConstantFieldBecameNonStatic.java",
-    "package $PackageName;
-    public class ConstantFieldBecameNonStatic {
-        public final String fieldName = \"Value\";
-    }");
-    
-    # Field_Became_Final
-    writeFile($Path_v1."/FieldBecameFinal.java",
-    "package $PackageName;
-    public class FieldBecameFinal {
-        public String fieldName;
-    }");
-    writeFile($Path_v2."/FieldBecameFinal.java",
-    "package $PackageName;
-    public class FieldBecameFinal {
-        public final String fieldName = \"Value\";
-    }");
-    
-    # Field_Became_NonFinal
-    writeFile($Path_v1."/FieldBecameNonFinal.java",
-    "package $PackageName;
-    public class FieldBecameNonFinal {
-        public final String fieldName = \"Value\";
-    }");
-    writeFile($Path_v2."/FieldBecameNonFinal.java",
-    "package $PackageName;
-    public class FieldBecameNonFinal {
-        public String fieldName;
-    }");
-    
-    # Removed_Method
-    writeFile($Path_v1."/RemovedMethod.java",
-    "package $PackageName;
-    public class RemovedMethod {
-        public Integer field = 100;
-        public Integer removedMethod(Integer param1, String param2) { return param1; }
-        public static Integer removedStaticMethod(Integer param) { return param; }
-    }");
-    writeFile($Path_v2."/RemovedMethod.java",
-    "package $PackageName;
-    public class RemovedMethod {
-        public Integer field = 100;
-    }");
-    
-    # Removed_Method (move up to java.lang.Object)
-    writeFile($Path_v1."/MoveUpToJavaLangObject.java",
-    "package $PackageName;
-    public class MoveUpToJavaLangObject extends java.lang.Object {
-        public int hashCode() { return 0; }
-    }");
-    writeFile($Path_v2."/MoveUpToJavaLangObject.java",
-    "package $PackageName;
-    public class MoveUpToJavaLangObject extends java.lang.Object {
-    }");
-    
-    writeFile($TestsPath."/Test_MoveUpToJavaLangObject.java",
-    "import $PackageName.*;
-    public class Test_MoveUpToJavaLangObject {
-        public static void main(String[] args) {
-            MoveUpToJavaLangObject X = new MoveUpToJavaLangObject();
-            int R = X.hashCode();
-        }
-    }");
-    
-    # Removed_Method (Deprecated)
-    writeFile($Path_v1."/RemovedDeprecatedMethod.java",
-    "package $PackageName;
-    public class RemovedDeprecatedMethod {
-        public Integer field = 100;
-        public Integer otherMethod(Integer param) { return param; }
-        \@Deprecated
-        public Integer removedMethod(Integer param1, String param2) { return param1; }
-    }");
-    writeFile($Path_v2."/RemovedDeprecatedMethod.java",
-    "package $PackageName;
-    public class RemovedDeprecatedMethod {
-        public Integer field = 100;
-        public Integer otherMethod(Integer param) { return param; }
-    }");
-    
-    # Interface_Removed_Abstract_Method
-    writeFile($Path_v1."/InterfaceRemovedAbstractMethod.java",
-    "package $PackageName;
-    public interface InterfaceRemovedAbstractMethod extends BaseInterface, BaseInterface2 {
-        public void removedMethod(Integer param1, java.io.ObjectOutput param2);
-        public void someMethod(Integer param);
-    }");
-    writeFile($Path_v2."/InterfaceRemovedAbstractMethod.java",
-    "package $PackageName;
-    public interface InterfaceRemovedAbstractMethod extends BaseInterface, BaseInterface2 {
-        public void someMethod(Integer param);
-    }");
-    
-    # Interface_Added_Abstract_Method
-    writeFile($Path_v1."/InterfaceAddedAbstractMethod.java",
-    "package $PackageName;
-    public interface InterfaceAddedAbstractMethod extends BaseInterface, BaseInterface2 {
-        public void someMethod(Integer param);
-    }");
-    writeFile($Path_v2."/InterfaceAddedAbstractMethod.java",
-    "package $PackageName;
-    public interface InterfaceAddedAbstractMethod extends BaseInterface, BaseInterface2 {
-        public void someMethod(Integer param);
-        public Integer addedMethod(Integer param);
-    }");
-    
-    # Interface_Added_Default_Method
-    writeFile($Path_v1."/InterfaceAddedDefaultMethod.java",
-    "package $PackageName;
-    public interface InterfaceAddedDefaultMethod {
-        public void someMethod(Integer param);
-    }");
-    writeFile($Path_v2."/InterfaceAddedDefaultMethod.java",
-    "package $PackageName;
-    public interface InterfaceAddedDefaultMethod {
-        public void someMethod(Integer param);
-        default Integer addedMethod(Integer param) { return 0; }
-    }");
-    
-    # Method_Became_NonDefault
-    writeFile($Path_v1."/MethodBecameNonDefault.java",
-    "package $PackageName;
-    public interface MethodBecameNonDefault {
-        default Integer someMethod(Integer param) { return 0; }
-    }");
-    writeFile($Path_v2."/MethodBecameNonDefault.java",
-    "package $PackageName;
-    public interface MethodBecameNonDefault {
-        public Integer someMethod(Integer param);
-    }");
-    
-    writeFile($TestsPath."/Test_MethodBecameNonDefault.java",
-    "import $PackageName.*;
-    class Class_MethodBecameNonDefault implements MethodBecameNonDefault {
-    };
-    
-    public class Test_MethodBecameNonDefault
-    {
-        public static void main(String[] args)
-        {
-            Class_MethodBecameNonDefault Obj = new Class_MethodBecameNonDefault();
-            Integer Res = Obj.someMethod(0);
-        }
-    }");
-    
-    # Variable_Arity_To_Array
-    writeFile($Path_v1."/VariableArityToArray.java",
-    "package $PackageName;
-    public class VariableArityToArray {
-        public void someMethod(Integer x, String... y) { };
-    }");
-    writeFile($Path_v2."/VariableArityToArray.java",
-    "package $PackageName;
-    public class VariableArityToArray {
-        public void someMethod(Integer x, String[] y) { };
-    }");
-    
-    # Class_Became_Interface
-    writeFile($Path_v1."/ClassBecameInterface.java",
-    "package $PackageName;
-    public class ClassBecameInterface extends BaseClass {
-        public Integer someMethod(Integer param) {
-            return param;
-        }
-    }");
-    writeFile($Path_v2."/ClassBecameInterface.java",
-    "package $PackageName;
-    public interface ClassBecameInterface extends BaseInterface, BaseInterface2 {
-        public Integer someMethod(Integer param);
-    }");
-    
-    # Added_Super_Class
-    writeFile($Path_v1."/AddedSuperClass.java",
-    "package $PackageName;
-    public class AddedSuperClass {
-        public Integer someMethod(Integer param) {
-            return param;
-        }
-    }");
-    writeFile($Path_v2."/AddedSuperClass.java",
-    "package $PackageName;
-    public class AddedSuperClass extends BaseClass {
-        public Integer someMethod(Integer param) {
-            return param;
-        }
-    }");
-    
-    # Abstract_Class_Added_Super_Abstract_Class
-    writeFile($Path_v1."/AbstractClassAddedSuperAbstractClass.java",
-    "package $PackageName;
-    public abstract class AbstractClassAddedSuperAbstractClass {
-        public Integer someMethod(Integer param) {
-            return param;
-        }
-    }");
-    writeFile($Path_v2."/AbstractClassAddedSuperAbstractClass.java",
-    "package $PackageName;
-    public abstract class AbstractClassAddedSuperAbstractClass extends BaseAbstractClass {
-        public Integer someMethod(Integer param) {
-            return param;
-        }
-    }");
-    
-    # Removed_Super_Class
-    writeFile($Path_v1."/RemovedSuperClass.java",
-    "package $PackageName;
-    public class RemovedSuperClass extends BaseClass {
-        public Integer someMethod(Integer param) {
-            return param;
-        }
-    }");
-    writeFile($Path_v2."/RemovedSuperClass.java",
-    "package $PackageName;
-    public class RemovedSuperClass {
-        public Integer someMethod(Integer param) {
-            return param;
-        }
-    }");
-    
-    # Changed_Super_Class
-    writeFile($Path_v1."/ChangedSuperClass.java",
-    "package $PackageName;
-    public class ChangedSuperClass extends BaseClass {
-        public Integer someMethod(Integer param) {
-            return param;
-        }
-    }");
-    writeFile($Path_v2."/ChangedSuperClass.java",
-    "package $PackageName;
-    public class ChangedSuperClass extends BaseClass2 {
-        public Integer someMethod(Integer param) {
-            return param;
-        }
-    }");
-    
-    # Abstract_Class_Added_Super_Interface
-    writeFile($Path_v1."/AbstractClassAddedSuperInterface.java",
-    "package $PackageName;
-    public abstract class AbstractClassAddedSuperInterface implements BaseInterface {
-        public Integer method(Integer param) {
-            return param;
-        }
-    }");
-    writeFile($Path_v2."/AbstractClassAddedSuperInterface.java",
-    "package $PackageName;
-    public abstract class AbstractClassAddedSuperInterface implements BaseInterface, BaseInterface2 {
-        public Integer method(Integer param) {
-            return param;
-        }
-    }");
-    
-    # Abstract_Class_Added_Super_Interface_With_Implemented_Methods
-    writeFile($Path_v1."/AbstractClassAddedSuperInterfaceWithImplementedMethods.java",
-    "package $PackageName;
-    public abstract class AbstractClassAddedSuperInterfaceWithImplementedMethods implements BaseInterface {
-        public Integer method(Integer param) {
-            return param;
-        }
-        public Integer method2(Integer param) {
-            return param;
-        }
-    }");
-    writeFile($Path_v2."/AbstractClassAddedSuperInterfaceWithImplementedMethods.java",
-    "package $PackageName;
-    public abstract class AbstractClassAddedSuperInterfaceWithImplementedMethods implements BaseInterface, BaseInterface2 {
-        public Integer method(Integer param) {
-            return param;
-        }
-        public Integer method2(Integer param) {
-            return param;
-        }
-    }");
-    
-    # Class_Removed_Super_Interface
-    writeFile($Path_v1."/ClassRemovedSuperInterface.java",
-    "package $PackageName;
-    public class ClassRemovedSuperInterface implements BaseInterface, BaseInterface2 {
-        public Integer method(Integer param) {
-            return param;
-        }
-        public Integer method2(Integer param) {
-            return param;
-        }
-    }");
-    writeFile($Path_v2."/ClassRemovedSuperInterface.java",
-    "package $PackageName;
-    public class ClassRemovedSuperInterface implements BaseInterface {
-        public Integer method(Integer param) {
-            return param;
-        }
-        public Integer method2(Integer param) {
-            return param;
-        }
-    }");
-    
-    writeFile($TestsPath."/Test_ClassRemovedSuperInterface.java",
-    "import $PackageName.*;
-    public class Test_ClassRemovedSuperInterface
-    {
-        public static void main(String[] args)
-        {
-            ClassRemovedSuperInterface Obj = new ClassRemovedSuperInterface();
-            Integer Res = Obj.method2(0);
-        }
-    }");
-    
-    # Interface_Added_Super_Interface
-    writeFile($Path_v1."/InterfaceAddedSuperInterface.java",
-    "package $PackageName;
-    public interface InterfaceAddedSuperInterface extends BaseInterface {
-        public Integer someMethod(Integer param);
-    }");
-    writeFile($Path_v2."/InterfaceAddedSuperInterface.java",
-    "package $PackageName;
-    public interface InterfaceAddedSuperInterface extends BaseInterface, BaseInterface2 {
-        public Integer someMethod(Integer param);
-    }");
-    
-    # Interface_Added_Super_Constant_Interface
-    writeFile($Path_v1."/InterfaceAddedSuperConstantInterface.java",
-    "package $PackageName;
-    public interface InterfaceAddedSuperConstantInterface extends BaseInterface {
-        public Integer someMethod(Integer param);
-    }");
-    writeFile($Path_v2."/InterfaceAddedSuperConstantInterface.java",
-    "package $PackageName;
-    public interface InterfaceAddedSuperConstantInterface extends BaseInterface, BaseConstantInterface {
-        public Integer someMethod(Integer param);
-    }");
-    
-    # Interface_Removed_Super_Interface
-    writeFile($Path_v1."/InterfaceRemovedSuperInterface.java",
-    "package $PackageName;
-    public interface InterfaceRemovedSuperInterface extends BaseInterface, BaseInterface2 {
-        public Integer someMethod(Integer param);
-    }");
-    writeFile($Path_v2."/InterfaceRemovedSuperInterface.java",
-    "package $PackageName;
-    public interface InterfaceRemovedSuperInterface extends BaseInterface {
-        public Integer someMethod(Integer param);
-    }");
-    
-    # Interface_Removed_Super_Constant_Interface
-    writeFile($Path_v1."/InterfaceRemovedSuperConstantInterface.java",
-    "package $PackageName;
-    public interface InterfaceRemovedSuperConstantInterface extends BaseInterface, BaseConstantInterface {
-        public Integer someMethod(Integer param);
-    }");
-    writeFile($Path_v2."/InterfaceRemovedSuperConstantInterface.java",
-    "package $PackageName;
-    public interface InterfaceRemovedSuperConstantInterface extends BaseInterface {
-        public Integer someMethod(Integer param);
-    }");
-    
-    # Interface_Became_Class
-    writeFile($Path_v1."/InterfaceBecameClass.java",
-    "package $PackageName;
-    public interface InterfaceBecameClass extends BaseInterface, BaseInterface2 {
-        public Integer someMethod(Integer param);
-    }");
-    writeFile($Path_v2."/InterfaceBecameClass.java",
-    "package $PackageName;
-    public class InterfaceBecameClass extends BaseClass {
-        public Integer someMethod(Integer param) {
-            return param;
-        }
-    }");
-    
-    # Removed_Class
-    writeFile($Path_v1."/RemovedClass.java",
-    "package $PackageName;
-    public class RemovedClass extends BaseClass {
-        public Integer someMethod(Integer param){
-            return param;
-        }
-    }");
-    
-    # Removed_Class (w/o methods)
-    writeFile($Path_v1."/RemovedFieldClass.java",
-    "package $PackageName;
-    public class RemovedFieldClass {
-        public Integer field;
-    }");
-    
-    writeFile($TestsPath."/Test_RemovedFieldClass.java",
-    "import $PackageName.*;
-    public class Test_RemovedFieldClass extends RemovedFieldClass
-    {
-        public static void main(String[] args)
-        {
-            RemovedFieldClass X = new RemovedFieldClass();
-            Integer Copy = X.field;
-        }
-    }");
-    
-    # Removed_Class (with static fields, private constructor)
-    writeFile($Path_v1."/RemovedClassWithStaticField.java",
-    "package $PackageName;
-    public class RemovedClassWithStaticField
-    {
-        private RemovedClassWithStaticField(){}
-        public static Integer cnt = 0;
-    }");
-    
-    writeFile($TestsPath."/Test_RemovedClassWithStaticField.java",
-    "import $PackageName.*;
-    public class Test_RemovedClassWithStaticField
-    {
-        public static void main(String[] args)
-        {
-            Integer Copy = RemovedClassWithStaticField.cnt;
-        }
-    }");
+    my ($Method, $Kind, $Location, $Level) = @_;
+    my %Affect = %{$CompatProblems{$Method}{$Kind}{$Location}};
+    my $New_Value = $Affect{"New_Value"};
+    my $Type_Name = $Affect{"Type_Name"};
+    my @Sentence_Parts = ();
     
-    # Removed_Field (static field, private constructor)
-    writeFile($Path_v1."/RemovedStaticFieldFromClassWithPrivateCtor.java",
-    "package $PackageName;
-    public class RemovedStaticFieldFromClassWithPrivateCtor
-    {
-        private RemovedStaticFieldFromClassWithPrivateCtor(){}
-        public static Integer cnt = 0;
-    }");
+    $Location=~s/\.[^.]+?\Z//;
     
-    writeFile($Path_v2."/RemovedStaticFieldFromClassWithPrivateCtor.java",
-    "package $PackageName;
-    public class RemovedStaticFieldFromClassWithPrivateCtor
-    {
-        private RemovedStaticFieldFromClassWithPrivateCtor(){}
-    }");
+    my $TypeAttr = getType($MethodInfo{1}{$Method}{"Class"}, 1);
+    my $Type_Type = $TypeAttr->{"Type"};
     
-    writeFile($TestsPath."/Test_RemovedStaticFieldFromClassWithPrivateCtor.java",
-    "import $PackageName.*;
-    public class Test_RemovedStaticFieldFromClassWithPrivateCtor
-    {
-        public static void main(String[] args)
-        {
-            Integer Copy = RemovedStaticFieldFromClassWithPrivateCtor.cnt;
-        }
-    }");
+    my $ABSTRACT_M = $MethodInfo{1}{$Method}{"Abstract"}?" abstract":"";
+    my $ABSTRACT_C = $TypeAttr->{"Abstract"}?" abstract":"";
+    my $METHOD_TYPE = $MethodInfo{1}{$Method}{"Constructor"}?"constructor":"method";
     
-    # Removed_Constant_Field
-    writeFile($Path_v1."/ClassRemovedStaticConstantField.java",
-    "package $PackageName;
-    public class ClassRemovedStaticConstantField
-    {
-        public static int removedField_Int = 1000;
-        public static String removedField_Str = \"Value\";
-    }");
-    writeFile($Path_v2."/ClassRemovedStaticConstantField.java",
-    "package $PackageName;
-    public class ClassRemovedStaticConstantField {
-    }");
-    
-    writeFile($TestsPath."/Test_ClassRemovedStaticConstantField.java",
-    "import $PackageName.*;
-    public class Test_ClassRemovedStaticConstantField
-    {
-        public static void main(String[] args)
-        {
-            Integer Copy = ClassRemovedStaticConstantField.removedField_Int;
-        }
-    }");
-    
-    # Removed_Class (Deprecated)
-    writeFile($Path_v1."/RemovedDeprecatedClass.java",
-    "package $PackageName;
-    \@Deprecated
-    public class RemovedDeprecatedClass {
-        public Integer someMethod(Integer param){
-            return param;
-        }
-    }");
-    
-    # Removed_Interface
-    writeFile($Path_v1."/RemovedInterface.java",
-    "package $PackageName;
-    public interface RemovedInterface extends BaseInterface, BaseInterface2 {
-        public Integer someMethod(Integer param);
-    }");
-    
-    # NonAbstract_Class_Added_Abstract_Method
-    writeFile($Path_v1."/NonAbstractClassAddedAbstractMethod.java",
-    "package $PackageName;
-    public class NonAbstractClassAddedAbstractMethod {
-        public Integer someMethod(Integer param1, String[] param2) {
-            return param1;
-        };
-    }");
-    writeFile($Path_v2."/NonAbstractClassAddedAbstractMethod.java",
-    "package $PackageName;
-    public abstract class NonAbstractClassAddedAbstractMethod {
-        public Integer someMethod(Integer param1, String[] param2) {
-            return param1;
-        };
-        public abstract Integer addedMethod(Integer param);
-    }");
-    
-    # Abstract_Class_Added_Abstract_Method
-    writeFile($Path_v1."/AbstractClassAddedAbstractMethod.java",
-    "package $PackageName;
-    public abstract class AbstractClassAddedAbstractMethod {
-        public Integer someMethod(Integer param1, String[] param2) {
-            return param1;
-        };
-    }");
-    writeFile($Path_v2."/AbstractClassAddedAbstractMethod.java",
-    "package $PackageName;
-    public abstract class AbstractClassAddedAbstractMethod {
-        public Integer someMethod(Integer param1, String[] param2) {
-            return param1;
-        };
-        public abstract Integer addedMethod(Integer param);
-    }");
-    
-    # Class_Became_Abstract
-    writeFile($Path_v1."/ClassBecameAbstract.java",
-    "package $PackageName;
-    public class ClassBecameAbstract {
-        public Integer someMethod(Integer param1, String[] param2) {
-            return param1;
-        };
-    }");
-    writeFile($Path_v2."/ClassBecameAbstract.java",
-    "package $PackageName;
-    public abstract class ClassBecameAbstract {
-        public Integer someMethod(Integer param1, String[] param2) {
-            return param1;
-        };
-        public abstract Integer addedMethod(Integer param);
-    }");
-    
-    # Class_Became_Final
-    writeFile($Path_v1."/ClassBecameFinal.java",
-    "package $PackageName;
-    public class ClassBecameFinal {
-        public Integer someMethod(Integer param1, String[] param2) {
-            return param1;
-        };
-    }");
-    writeFile($Path_v2."/ClassBecameFinal.java",
-    "package $PackageName;
-    public final class ClassBecameFinal {
-        public Integer someMethod(Integer param1, String[] param2) {
-            return param1;
-        };
-    }");
-    
-    # Class_Removed_Abstract_Method
-    writeFile($Path_v1."/ClassRemovedAbstractMethod.java",
-    "package $PackageName;
-    public abstract class ClassRemovedAbstractMethod {
-        public Integer someMethod(Integer param1, String[] param2) {
-            return param1;
-        };
-        public abstract Integer removedMethod(Integer param);
-    }");
-    writeFile($Path_v2."/ClassRemovedAbstractMethod.java",
-    "package $PackageName;
-    public abstract class ClassRemovedAbstractMethod {
-        public Integer someMethod(Integer param1, String[] param2) {
-            return param1;
-        };
-    }");
-    
-    # Class_Method_Became_Abstract
-    writeFile($Path_v1."/ClassMethodBecameAbstract.java",
-    "package $PackageName;
-    public abstract class ClassMethodBecameAbstract {
-        public Integer someMethod(Integer param1, String[] param2) {
-            return param1;
-        };
-        public Integer someMethod(Integer param){
-            return param;
-        };
-    }");
-    writeFile($Path_v2."/ClassMethodBecameAbstract.java",
-    "package $PackageName;
-    public abstract class ClassMethodBecameAbstract {
-        public Integer someMethod(Integer param1, String[] param2) {
-            return param1;
-        };
-        public abstract Integer someMethod(Integer param);
-    }");
-    
-    # Class_Method_Became_NonAbstract
-    writeFile($Path_v1."/ClassMethodBecameNonAbstract.java",
-    "package $PackageName;
-    public abstract class ClassMethodBecameNonAbstract {
-        public Integer someMethod(Integer param1, String[] param2) {
-            return param1;
-        };
-        public abstract Integer someMethod(Integer param);
-    }");
-    writeFile($Path_v2."/ClassMethodBecameNonAbstract.java",
-    "package $PackageName;
-    public abstract class ClassMethodBecameNonAbstract {
-        public Integer someMethod(Integer param1, String[] param2) {
-            return param1;
-        };
-        public Integer someMethod(Integer param){
-            return param;
-        };
-    }");
-    
-    # Method_Became_Static
-    writeFile($Path_v1."/MethodBecameStatic.java",
-    "package $PackageName;
-    public class MethodBecameStatic {
-        public Integer someMethod(Integer param) {
-            return param;
-        };
-    }");
-    writeFile($Path_v2."/MethodBecameStatic.java",
-    "package $PackageName;
-    public class MethodBecameStatic {
-        public static Integer someMethod(Integer param) {
-            return param;
-        };
-    }");
-    
-    # Method_Became_NonStatic
-    writeFile($Path_v1."/MethodBecameNonStatic.java",
-    "package $PackageName;
-    public class MethodBecameNonStatic {
-        public static Integer someMethod(Integer param) {
-            return param;
-        };
-    }");
-    writeFile($Path_v2."/MethodBecameNonStatic.java",
-    "package $PackageName;
-    public class MethodBecameNonStatic {
-        public Integer someMethod(Integer param) {
-            return param;
-        };
-    }");
-    
-    # Static_Method_Became_Final
-    writeFile($Path_v1."/StaticMethodBecameFinal.java",
-    "package $PackageName;
-    public class StaticMethodBecameFinal {
-        public static Integer someMethod(Integer param) {
-            return param;
-        };
-    }");
-    writeFile($Path_v2."/StaticMethodBecameFinal.java",
-    "package $PackageName;
-    public class StaticMethodBecameFinal {
-        public static final Integer someMethod(Integer param) {
-            return param;
-        };
-    }");
-    
-    # NonStatic_Method_Became_Final
-    writeFile($Path_v1."/NonStaticMethodBecameFinal.java",
-    "package $PackageName;
-    public class NonStaticMethodBecameFinal {
-        public Integer someMethod(Integer param) {
-            return param;
-        };
-    }");
-    writeFile($Path_v2."/NonStaticMethodBecameFinal.java",
-    "package $PackageName;
-    public class NonStaticMethodBecameFinal {
-        public final Integer someMethod(Integer param) {
-            return param;
-        };
-    }");
-    
-    # Method_Became_Abstract
-    writeFile($Path_v1."/MethodBecameAbstract.java",
-    "package $PackageName;
-    public abstract class MethodBecameAbstract {
-        public Integer someMethod(Integer param) {
-            return param;
-        };
-    }");
-    writeFile($Path_v2."/MethodBecameAbstract.java",
-    "package $PackageName;
-    public abstract class MethodBecameAbstract {
-        public abstract Integer someMethod(Integer param);
-    }");
-    
-    # Method_Became_NonAbstract
-    writeFile($Path_v1."/MethodBecameNonAbstract.java",
-    "package $PackageName;
-    public abstract class MethodBecameNonAbstract {
-        public abstract Integer someMethod(Integer param);
-    }");
-    writeFile($Path_v2."/MethodBecameNonAbstract.java",
-    "package $PackageName;
-    public abstract class MethodBecameNonAbstract {
-        public Integer someMethod(Integer param) {
-            return param;
-        };
-    }");
-    
-    # Changed_Method_Access
-    writeFile($Path_v1."/ChangedMethodAccess.java",
-    "package $PackageName;
-    public class ChangedMethodAccess {
-        public Integer someMethod(Integer param) {
-            return param;
-        };
-    }");
-    writeFile($Path_v2."/ChangedMethodAccess.java",
-    "package $PackageName;
-    public class ChangedMethodAccess {
-        protected Integer someMethod(Integer param) {
-            return param;
-        };
-    }");
-    
-    # Method_Became_Synchronized
-    writeFile($Path_v1."/MethodBecameSynchronized.java",
-    "package $PackageName;
-    public class MethodBecameSynchronized {
-        public Integer someMethod(Integer param) {
-            return param;
-        };
-    }");
-    writeFile($Path_v2."/MethodBecameSynchronized.java",
-    "package $PackageName;
-    public class MethodBecameSynchronized {
-        public synchronized Integer someMethod(Integer param) {
-            return param;
-        };
-    }");
-    
-    # Method_Became_NonSynchronized
-    writeFile($Path_v1."/MethodBecameNonSynchronized.java",
-    "package $PackageName;
-    public class MethodBecameNonSynchronized {
-        public synchronized Integer someMethod(Integer param) {
-            return param;
-        };
-    }");
-    writeFile($Path_v2."/MethodBecameNonSynchronized.java",
-    "package $PackageName;
-    public class MethodBecameNonSynchronized {
-        public Integer someMethod(Integer param) {
-            return param;
-        };
-    }");
-    
-    # Class_Overridden_Method
-    writeFile($Path_v1."/OverriddenMethod.java",
-    "package $PackageName;
-    public class OverriddenMethod extends BaseClass {
-        public Integer someMethod(Integer param) { return param; }
-    }");
-    writeFile($Path_v2."/OverriddenMethod.java",
-    "package $PackageName;
-    public class OverriddenMethod extends BaseClass {
-        public Integer someMethod(Integer param) { return param; }
-        public Integer method(Integer param) { return 2*param; }
-    }");
-    
-    # Class_Method_Moved_Up_Hierarchy
-    writeFile($Path_v1."/ClassMethodMovedUpHierarchy.java",
-    "package $PackageName;
-    public class ClassMethodMovedUpHierarchy extends BaseClass {
-        public Integer someMethod(Integer param) { return param; }
-        public Integer method(Integer param) { return 2*param; }
-    }");
-    writeFile($Path_v2."/ClassMethodMovedUpHierarchy.java",
-    "package $PackageName;
-    public class ClassMethodMovedUpHierarchy extends BaseClass {
-        public Integer someMethod(Integer param) { return param; }
-    }");
-    
-    # Class_Method_Moved_Up_Hierarchy (Interface Method) - should not be reported
-    writeFile($Path_v1."/InterfaceMethodMovedUpHierarchy.java",
-    "package $PackageName;
-    public interface InterfaceMethodMovedUpHierarchy extends BaseInterface {
-        public Integer method(Integer param);
-        public Integer method2(Integer param);
-    }");
-    writeFile($Path_v2."/InterfaceMethodMovedUpHierarchy.java",
-    "package $PackageName;
-    public interface InterfaceMethodMovedUpHierarchy extends BaseInterface {
-        public Integer method2(Integer param);
-    }");
-    
-    # Class_Method_Moved_Up_Hierarchy (Abstract Method) - should not be reported
-    writeFile($Path_v1."/AbstractMethodMovedUpHierarchy.java",
-    "package $PackageName;
-    public abstract class AbstractMethodMovedUpHierarchy implements BaseInterface {
-        public abstract Integer method(Integer param);
-        public abstract Integer method2(Integer param);
-    }");
-    writeFile($Path_v2."/AbstractMethodMovedUpHierarchy.java",
-    "package $PackageName;
-    public abstract class AbstractMethodMovedUpHierarchy implements BaseInterface {
-        public abstract Integer method2(Integer param);
-    }");
-    
-    # Use
-    writeFile($Path_v1."/Use.java",
-    "package $PackageName;
-    public class Use
+    if($Kind eq "Class_Overridden_Method" or $Kind eq "Class_Method_Moved_Up_Hierarchy") {
+        return "Method '".getSignature($New_Value, 2, "Class|HTML|Italic")."' will be called instead of this method in a client program.";
+    }
+    elsif($CompatRules{$Level}{$Kind}{"Kind"} eq "Types")
     {
-        public FieldBecameFinal field;
-        public void someMethod(FieldBecameFinal[] param) { };
-        public void someMethod(Use param) { };
-        public Integer someMethod(AbstractClassAddedSuperAbstractClass param) {
-            return 0;
-        }
-        public Integer someMethod(AbstractClassAddedAbstractMethod param) {
-            return 0;
-        }
-        public Integer someMethod(InterfaceAddedAbstractMethod param) {
-            return 0;
-        }
-        public Integer someMethod(InterfaceAddedSuperInterface param) {
-            return 0;
+        my %MInfo = %{$MethodInfo{1}{$Method}};
+        
+        if($Location eq "this") {
+            return "This$ABSTRACT_M $METHOD_TYPE is from \'".specChars($Type_Name)."\'$ABSTRACT_C $Type_Type.";
         }
-        public Integer someMethod(AbstractClassAddedSuperInterface param) {
-            return 0;
+        
+        my $TypeID = undef;
+        
+        if($Location=~/retval/)
+        { # return value
+            if($Location=~/\./) {
+                push(@Sentence_Parts, "Field \'".specChars($Location)."\' in the return value");
+            }
+            else {
+                push(@Sentence_Parts, "Return value");
+            }
+            
+            $TypeID = $MInfo{"Return"};
         }
-        public Integer someMethod(AbstractClassAddedSuperInterfaceWithImplementedMethods param) {
-            return 0;
+        elsif($Location=~/this/)
+        { # "this" reference
+            push(@Sentence_Parts, "Field \'".specChars($Location)."\' in the object");
+            
+            $TypeID = $MInfo{"Class"};
         }
-    }");
-    writeFile($Path_v2."/Use.java",
-    "package $PackageName;
-    public class Use
-    {
-        public FieldBecameFinal field;
-        public void someMethod(FieldBecameFinal[] param) { };
-        public void someMethod(Use param) { };
-        public Integer someMethod(AbstractClassAddedSuperAbstractClass param) {
-            return param.abstractMethod(100)+param.field;
-        }
-        public Integer someMethod(AbstractClassAddedAbstractMethod param) {
-            return param.addedMethod(100);
-        }
-        public Integer someMethod(InterfaceAddedAbstractMethod param) {
-            return param.addedMethod(100);
-        }
-        public Integer someMethod(InterfaceAddedSuperInterface param) {
-            return param.method2(100);
-        }
-        public Integer someMethod(AbstractClassAddedSuperInterface param) {
-            return param.method2(100);
-        }
-        public Integer someMethod(AbstractClassAddedSuperInterfaceWithImplementedMethods param) {
-            return param.method2(100);
-        }
-    }");
-    
-    # Added_Package
-    writeFile($Path_v2."/AddedPackage/AddedPackageClass.java",
-    "package $PackageName.AddedPackage;
-    public class AddedPackageClass {
-        public Integer field;
-        public void someMethod(Integer param) { };
-    }");
-    
-    # Removed_Package
-    writeFile($Path_v1."/RemovedPackage/RemovedPackageClass.java",
-    "package $PackageName.RemovedPackage;
-    public class RemovedPackageClass {
-        public Integer field;
-        public void someMethod(Integer param) { };
-    }");
-    my $BuildRoot1 = get_dirname($Path_v1);
-    my $BuildRoot2 = get_dirname($Path_v2);
-    if(compileJavaLib($LibName, $BuildRoot1, $BuildRoot2))
-    {
-        runTests($TestsPath, $PackageName, $BuildRoot1, $BuildRoot2);
-        runChecker($LibName, $BuildRoot1, $BuildRoot2);
-    }
-}
-
-sub readArchive($$)
-{ # 1, 2 - library, 0 - client
-    my ($LibVersion, $Path) = @_;
-    return if(not $Path or not -e $Path);
-    
-    if($LibVersion)
-    {
-        my $ArchiveName = get_filename($Path);
-        $LibArchives{$LibVersion}{$ArchiveName} = 1;
-    }
-    
-    $Path = get_abs_path($Path);
-    my $JarCmd = get_CmdPath("jar");
-    if(not $JarCmd) {
-        exitStatus("Not_Found", "can't find \"jar\" command");
-    }
-    my $ExtractPath = joinPath($TMP_DIR, $ExtractCounter);
-    if(-d $ExtractPath) {
-        rmtree($ExtractPath);
-    }
-    mkpath($ExtractPath);
-    chdir($ExtractPath);
-    system($JarCmd." -xf \"$Path\"");
-    if($?) {
-        exitStatus("Error", "can't extract \'$Path\'");
-    }
-    chdir($ORIG_DIR);
-    my @Classes = ();
-    foreach my $ClassPath (cmd_find($ExtractPath,"","*\.class",""))
-    {
-        if($OSgroup ne "windows") {
-            $ClassPath=~s/\.class\Z//g;
+        else
+        { # parameters
+            my $PName = getParamName($Location);
+            my $PPos = getParamPos($PName, $Method, 1);
+            
+            if($Location=~/\./) {
+                push(@Sentence_Parts, "Field \'".specChars($Location)."\' in ".showPos($PPos)." parameter");
+            }
+            else {
+                push(@Sentence_Parts, showPos($PPos)." parameter");
+            }
+            if($PName) {
+                push(@Sentence_Parts, "\'$PName\'");
+            }
+            
+            if(defined $MInfo{"Param"}) {
+                $TypeID = $MInfo{"Param"}{$PPos}{"Type"};
+            }
         }
+        push(@Sentence_Parts, " of this$ABSTRACT_M method");
         
-        my $ClassName = get_filename($ClassPath);
-        if($ClassName=~/\$\d/) {
-            next;
-        }
-        $ClassPath = cut_path_prefix($ClassPath, $ExtractPath); # javap decompiler accepts relative paths only
+        my $Location_T = $Location;
+        $Location_T=~s/\A\w+(\.|\Z)//; # location in type
         
-        my $ClassDir = get_dirname($ClassPath);
-        if($ClassDir=~/\./)
-        { # jaxb-osgi.jar/1.0/org/apache
-            next;
+        my $TypeID_Problem = $TypeID;
+        if($Location_T) {
+            $TypeID_Problem = getFieldType($Location_T, $TypeID, 1);
         }
         
-        my $Package = get_PFormat($ClassDir);
-        if($LibVersion)
-        {
-            if(skipPackage($Package, $LibVersion))
-            { # internal packages
-                next;
-            }
+        if($TypeInfo{1}{$TypeID_Problem}{"Name"} eq $Type_Name) {
+            push(@Sentence_Parts, "is of type \'".specChars($Type_Name)."\'.");
+        }
+        else {
+            push(@Sentence_Parts, "has base type \'".specChars($Type_Name)."\'.");
         }
-        
-        $ClassName=~s/\$/./g; # real name for GlyphView$GlyphPainter is GlyphView.GlyphPainter
-        push(@Classes, $ClassPath);
     }
+    return join(" ", @Sentence_Parts);
+}
+
+sub getParamPos($$$)
+{
+    my ($Name, $Method, $LVer) = @_;
     
-    if($#Classes!=-1)
+    if(defined $MethodInfo{$LVer}{$Method}
+    and defined $MethodInfo{$LVer}{$Method}{"Param"})
     {
-        foreach my $PartRef (divideArray(\@Classes))
+        my $Info = $MethodInfo{$LVer}{$Method};
+        foreach (keys(%{$Info->{"Param"}}))
         {
-            if($LibVersion) {
-                readClasses($PartRef, $LibVersion, get_filename($Path));
-            }
-            else {
-                readClasses_Usage($PartRef);
+            if($Info->{"Param"}{$_}{"Name"} eq $Name)
+            {
+                return $_;
             }
         }
     }
     
-    $ExtractCounter+=1;
-    
-    if($LibVersion)
-    {
-        foreach my $SubArchive (cmd_find($ExtractPath,"","*\.jar",""))
-        { # recursive step
-            readArchive($LibVersion, $SubArchive);
-        }
-    }
-    
-    rmtree($ExtractPath);
+    return undef;
 }
 
-sub native_path($)
+sub getParamName($)
 {
-    my $Path = $_[0];
-    if($OSgroup eq "windows") {
-        $Path=~s/[\/\\]+/\\/g;
-    }
-    return $Path;
+    my $Loc = $_[0];
+    $Loc=~s/\..*//g;
+    return $Loc;
 }
 
-sub divideArray($)
+sub getFieldType($$$)
 {
-    my $ArrRef = $_[0];
-    return () if(not $ArrRef);
-    my @Array = @{$ArrRef};
-    return () if($#{$ArrRef}==-1);
+    my ($Location, $TypeId, $LVer) = @_;
     
-    my @Res = ();
-    my $Sub = [];
-    my $Len = 0;
+    my @Fields = split(/\./, $Location);
     
-    foreach my $Pos (0 .. $#{$ArrRef})
+    foreach my $Name (@Fields)
     {
-        my $Arg = $ArrRef->[$Pos];
-        my $Arg_L = length($Arg) + 1; # space
-        if($Len < $ARG_MAX - 250)
-        {
-            push(@{$Sub}, $Arg);
-            $Len += $Arg_L;
-        }
-        else
+        my $TInfo = getBaseType($TypeId, $LVer);
+        
+        foreach my $N (keys(%{$TInfo->{"Fields"}}))
         {
-            push(@Res, $Sub);
-            
-            $Sub = [$Arg];
-            $Len = $Arg_L;
+            if($N eq $Name)
+            {
+                $TypeId = $TInfo->{"Fields"}{$N}{"Type"};
+                last;
+            }
         }
     }
     
-    if($#{$Sub}!=-1) {
-        push(@Res, $Sub);
-    }
-    
-    return @Res;
+    return $TypeId;
 }
 
-sub registerType($$)
+sub writeReport($$)
 {
-    my ($TName, $LibVersion) = @_;
-    
-    if(not $TName) {
-        return 0;
+    my ($Level, $Report) = @_;
+    my $RPath = getReportPath($Level);
+    writeFile($RPath, $Report);
+}
+
+sub createReport()
+{
+    if($In::Opt{"JoinReport"}) {
+        writeReport("Join", getReport("Join"));
     }
-    
-    $TName=~s/#/./g;
-    if($TName_Tid{$LibVersion}{$TName}) {
-        return $TName_Tid{$LibVersion}{$TName};
+    elsif($In::Opt{"DoubleReport"})
+    { # default
+        writeReport("Binary", getReport("Binary"));
+        writeReport("Source", getReport("Source"));
     }
-    
-    if(not $TName_Tid{$LibVersion}{$TName})
-    {
-        my $ID = undef;
-        if($REPRODUCIBLE) {
-            $ID = getMd5($TName);
-        }
-        else {
-            $ID = ++$TYPE_ID;
-        }
-        $TName_Tid{$LibVersion}{$TName} = "$ID";
+    elsif($In::Opt{"BinaryOnly"})
+    { # --binary
+        writeReport("Binary", getReport("Binary"));
     }
-    
-    my $Tid = $TName_Tid{$LibVersion}{$TName};
-    $TypeInfo{$LibVersion}{$Tid}{"Name"} = $TName;
-    if($TName=~/(.+)\[\]\Z/)
-    {
-        if(my $BaseTypeId = registerType($1, $LibVersion))
-        {
-            $TypeInfo{$LibVersion}{$Tid}{"BaseType"} = $BaseTypeId;
-            $TypeInfo{$LibVersion}{$Tid}{"Type"} = "array";
-        }
+    elsif($In::Opt{"SourceOnly"})
+    { # --source
+        writeReport("Source", getReport("Source"));
     }
-    
-    return $Tid;
 }
 
-sub readClasses_Usage($)
+sub getCssStyles($)
 {
-    my $Paths = $_[0];
-    return () if(not $Paths);
+    my $Level = $_[0];
     
-    my $JavapCmd = get_CmdPath("javap");
-    if(not $JavapCmd) {
-        exitStatus("Not_Found", "can't find \"javap\" command");
-    }
+    my $CssStyles = readModule("Css", "Report.css");
     
-    my $Input = join(" ", @{$Paths});
-    if($OSgroup ne "windows")
-    { # on unix ensure that the system does not try and interpret the $, by escaping it
-        $Input=~s/\$/\\\$/g;
+    if($Level eq "Join" or $In::Opt{"ExternCss"}) {
+        $CssStyles .= readModule("Css", "Tabs.css");
     }
     
-    chdir($TMP_DIR."/".$ExtractCounter);
-    open(CONTENT, "$JavapCmd -c -private $Input 2>\"$TMP_DIR/warn\" |");
-    while(<CONTENT>)
-    {
-        if(/\/\/\s*(Method|InterfaceMethod)\s+(.+)\Z/)
-        {
-            my $M = $2;
-            $UsedMethods_Client{$M} = 1;
-            
-            if($M=~/\A(.*)+\.\w+\:\(/)
-            {
-                my $C = $1;
-                $C=~s/\//./g;
-                $UsedClasses_Client{$C} = 1;
-            }
-        }
-        elsif(/\/\/\s*Field\s+(.+)\Z/)
-        {
-            my $FieldName = $1;
-            if(/\s+(putfield|getfield|getstatic|putstatic)\s+/) {
-                $UsedFields_Client{$FieldName} = $1;
-            }
-        }
-        elsif(/ ([^\s]+) [^: ]+\(([^()]+)\)/)
-        {
-            my ($Ret, $Params) = ($1, $2);
-            
-            $Ret=~s/\[\]//g; # quals
-            $UsedClasses_Client{$Ret} = 1;
-            
-            foreach my $Param (split(/\s*,\s*/, $Params))
-            {
-                $Param=~s/\[\]//g; # quals
-                $UsedClasses_Client{$Param} = 1;
-            }
-        }
-        elsif(/ class /)
-        {
-            if(/extends ([^\s{]+)/)
-            {
-                foreach my $Class (split(/\s*,\s*/, $1)) {
-                    $UsedClasses_Client{$Class} = 1;
-                }
-            }
-            
-            if(/implements ([^\s{]+)/)
-            {
-                foreach my $Interface (split(/\s*,\s*/, $1)) {
-                    $UsedClasses_Client{$Interface} = 1;
-                }
-            }
-        }
-    }
-    close(CONTENT);
-    chdir($ORIG_DIR);
+    return $CssStyles;
 }
 
-sub readClasses($$$)
+sub getJsScript($)
 {
-    my ($Paths, $LibVersion, $ArchiveName) = @_;
-    return if(not $Paths or not $LibVersion or not $ArchiveName);
-    
-    my $JavapCmd = get_CmdPath("javap");
-    if(not $JavapCmd) {
-        exitStatus("Not_Found", "can't find \"javap\" command");
-    }
+    my $Level = $_[0];
     
-    my $Input = join(" ", @{$Paths});
-    if($OSgroup ne "windows")
-    { # on unix ensure that the system does not try and interpret the $, by escaping it
-        $Input=~s/\$/\\\$/g;
-    }
+    my $JScripts = readModule("Js", "Sections.js");
     
-    my $Output = $TMP_DIR."/class-dump.txt";
-    if(-e $Output) {
-        unlink($Output);
+    if($Level eq "Join" or $In::Opt{"ExternJs"}) {
+        $JScripts .= readModule("Js", "Tabs.js");
     }
     
-    my $Cmd = "$JavapCmd -s -private";
-    if(not $Quick) {
-        $Cmd .= " -c -verbose";
-    }
+    return $JScripts;
+}
+
+sub getReport($)
+{
+    my $Level = $_[0];
     
-    chdir($TMP_DIR."/".$ExtractCounter);
-    system($Cmd." ".$Input." >\"$Output\" 2>\"$TMP_DIR/warn\"");
-    chdir($ORIG_DIR);
+    my $CssStyles = getCssStyles($Level);
+    my $JScripts = getJsScript($Level);
     
-    if(not -e $Output) {
-        exitStatus("Error", "internal error in parser, try to reduce ARG_MAX");
-    }
-    if($Debug) {
-        appendFile($DEBUG_PATH{$LibVersion}."/class-dump.txt", readFile($Output));
+    if(defined $In::Opt{"ExternCss"}) {
+        writeFile($In::Opt{"ExternCss"}, $CssStyles);
     }
     
-    # ! private info should be processed
-    open(CONTENT, "$TMP_DIR/class-dump.txt");
-    my @Content = <CONTENT>;
-    close(CONTENT);
-    
-    my (%TypeAttr, $CurrentMethod, $CurrentPackage, $CurrentClass) = ();
-    my ($InParamTable, $InExceptionTable, $InCode) = (0, 0, 0);
-    
-    my $InAnnotations = undef;
-    my $InAnnotations_Class = undef;
-    my $InAnnotations_Method = undef;
-    my %AnnotationName = ();
-    my %AnnotationNum = (); # support for Java 7
+    if(defined $In::Opt{"ExternJs"}) {
+        writeFile($In::Opt{"ExternJs"}, $JScripts);
+    }
     
-    my ($ParamPos, $FieldPos, $LineNum) = (0, 0, 0);
-    while($LineNum<=$#Content)
+    if($Level eq "Join")
     {
-        my $LINE = $Content[$LineNum++];
-        my $LINE_N = $Content[$LineNum];
+        my $Title = $In::Opt{"TargetTitle"}.": ".$In::Desc{1}{"Version"}." to ".$In::Desc{2}{"Version"}." compatibility report";
+        my $Keywords = $In::Opt{"TargetTitle"}.", compatibility";
+        my $Description = "Compatibility report for the ".$In::Opt{"TargetTitle"}." library between ".$In::Desc{1}{"Version"}." and ".$In::Desc{2}{"Version"}." versions";
         
-        if($LINE=~/\A\s*(?:const|AnnotationDefault|Compiled|Source|Constant)/) {
-            next;
-        }
-        
-        if($LINE=~/\sof\s|\sline \d+:|\[\s*class|= \[|\$[\d\$\(:\.;]| class\$|[\.\/]\$|\._\d|\$eq/)
-        { # artificial methods and code
-            next;
-        }
-        
-        if($LINE=~/ (\w+\$|)\w+\$\w+[\(:]/) {
-            next;
-        }
+        my ($BSummary, $BMetaData) = getSummary("Binary");
+        my ($SSummary, $SMetaData) = getSummary("Source");
         
-        # $LINE=~s/ \$(\w)/ $1/g;
-        # $LINE_N=~s/ \$(\w)/ $1/g;
-        
-        if(not $InParamTable)
-        {
-            if($LINE=~/ \$/) {
-                next;
-            }
-        }
-        
-        $LINE=~s/\$([\> ]|\Z)/$1/g;
-        $LINE_N=~s/\$([\> ]|\Z)/$1/g;
+        my $Report = "<!-\- $BMetaData -\->\n<!-\- $SMetaData -\->\n".composeHTML_Head($Level, $Title, $Keywords, $Description, $CssStyles, $JScripts)."<body><a name='Source'></a><a name='Binary'></a><a name='Top'></a>";
         
-        if($LINE eq "\n" or $LINE eq "}\n")
-        {
-            $CurrentMethod = undef;
-            $InCode = 0;
-            $InAnnotations_Method = 0;
-            $InParamTable = 0;
-        }
+        $Report .= getReportHeader("Join");
+        $Report .= "<br/><div class='tabset'>\n";
+        $Report .= "<a id='BinaryID' href='#BinaryTab' class='tab active'>Binary<br/>Compatibility</a>\n";
+        $Report .= "<a id='SourceID' href='#SourceTab' style='margin-left:3px' class='tab disabled'>Source<br/>Compatibility</a>\n";
+        $Report .= "</div>\n";
         
-        if($LINE eq "}\n") {
-            $InAnnotations_Class = 1;
-        }
+        $Report .= "<div id='BinaryTab' class='tab'>\n$BSummary\n".getReportAdded("Binary").getReportRemoved("Binary").getReportProblems("High", "Binary").getReportProblems("Medium", "Binary").getReportProblems("Low", "Binary").getReportProblems("Safe", "Binary").getSourceInfo()."<br/><br/><br/></div>";
         
-        if($LINE=~/\A\s*#(\d+)/)
-        { # Constant pool
-            my $CNum = $1;
-            if($LINE=~/\s+([^ ]+?);/)
-            {
-                my $AName = $1;
-                $AName=~s/\AL//;
-                $AName=~s/\$/./g;
-                $AName=~s/\//./g;
-                
-                $AnnotationName{$CNum} = $AName;
-                
-                if(defined $AnnotationNum{$CNum})
-                { # support for Java 7
-                    if($InAnnotations_Class) {
-                        $TypeAttr{"Annotations"}{registerType($AName, $LibVersion)} = 1;
-                    }
-                    delete($AnnotationNum{$CNum});
-                }
-            }
-            
-            next;
-        }
+        $Report .= "<div id='SourceTab' class='tab'>\n$SSummary\n".getReportAdded("Source").getReportRemoved("Source").getReportProblems("High", "Source").getReportProblems("Medium", "Source").getReportProblems("Low", "Source").getReportProblems("Safe", "Source").getSourceInfo()."<br/><br/><br/></div>";
         
-        # Java 7: templates
-        if(index($LINE, "<")!=-1)
-        { # <T extends java.lang.Object>
-          # <KEYIN extends java.lang.Object ...
-            if($LINE=~/<[A-Z\d\?]+ /i)
-            {
-                while($LINE=~/<([A-Z\d\?]+ .*?)>( |\Z)/i)
-                {
-                    my $Str = $1;
-                    my @Prms = ();
-                    foreach my $P (separate_Params($Str, 0, 0))
-                    {
-                        $P=~s/\A([A-Z\d\?]+) .*\Z/$1/ig;
-                        push(@Prms, $P);
-                    }
-                    my $Str_N = join(", ", @Prms);
-                    $LINE=~s/\Q$Str\E/$Str_N/g;
-                }
-            }
-        }
+        $Report .= getReportFooter();
+        $Report .= "\n</body></html>";
+        return $Report;
+    }
+    else
+    {
+        my ($Summary, $MetaData) = getSummary($Level);
         
-        $LINE=~s/\s*,\s*/,/g;
-        $LINE=~s/\$/#/g;
+        my $Title = $In::Opt{"TargetTitle"}.": ".$In::Desc{1}{"Version"}." to ".$In::Desc{2}{"Version"}." ".lc($Level)." compatibility report";
+        my $Keywords = $In::Opt{"TargetTitle"}.", ".lc($Level).", compatibility";
+        my $Description = "$Level compatibility report for the ".$In::Opt{"TargetTitle"}." library between ".$In::Desc{1}{"Version"}." and ".$In::Desc{2}{"Version"}." versions";
         
-        if(index($LINE, "LocalVariableTable")!=-1) {
-            $InParamTable += 1;
-        }
-        elsif($LINE=~/Exception\s+table/) {
-            $InExceptionTable = 1;
-        }
-        elsif($LINE=~/\A\s*Code:/)
-        {
-            $InCode += 1;
-            $InAnnotations = undef;
-        }
-        elsif($LINE=~/\A\s*\d+:\s*(.*)\Z/)
-        { # read Code
-            if($InCode==1)
-            {
-                if($CurrentMethod)
-                {
-                    if(index($LINE, "invoke")!=-1)
-                    {
-                        if($LINE=~/ invoke(\w+) .* \/\/\s*(Method|InterfaceMethod)\s+(.+)\Z/)
-                        { # 3:   invokevirtual   #2; //Method "[Lcom/sleepycat/je/Database#DbState;".clone:()Ljava/lang/Object;
-                            my ($InvokeType, $InvokedName) = ($1, $3);
-                            
-                            if($InvokedName!~/\A(\w+:|java\/(lang|util|io)\/)/
-                            and index($InvokedName, '"<init>":')!=0)
-                            {
-                                $InvokedName=~s/#/\$/g;
-                                $MethodUsed{$LibVersion}{$InvokedName}{$CurrentMethod} = $InvokeType;
-                            }
-                        }
-                    }
-                    # elsif($LINE=~/ (getstatic|putstatic) .* \/\/\s*Field\s+(.+)\Z/)
-                    # {
-                    #     my $UsedFieldName = $2;
-                    #     $FieldUsed{$LibVersion}{$UsedFieldName}{$CurrentMethod} = 1;
-                    # }
-                }
-            }
-            elsif(defined $InAnnotations)
-            {
-                if($LINE=~/\A\s*\d+\:\s*#(\d+)/)
-                {
-                    if(my $AName = $AnnotationName{$1})
-                    {
-                        if($InAnnotations_Class) {
-                            $TypeAttr{"Annotations"}{registerType($AName, $LibVersion)} = 1;
-                        }
-                        elsif($InAnnotations_Method) {
-                            $MethodInfo{$LibVersion}{$CurrentMethod}{"Annotations"}{registerType($AName, $LibVersion)} = 1;
-                        }
-                    }
-                    else
-                    { # suport for Java 7
-                        $AnnotationNum{$1} = 1;
-                    }
-                }
-            }
-        }
-        elsif($CurrentMethod and $InParamTable==1 and $LINE=~/\A\s+0\s+\d+\s+\d+\s+(\#?)(\w+)/)
-        { # read parameter names from LocalVariableTable
-            my $Art = $1;
-            my $PName = $2;
-            
-            if(($PName ne "this" or $Art) and $PName=~/[a-z]/i)
-            {
-                if($CurrentMethod)
-                {
-                    if(defined $MethodInfo{$LibVersion}{$CurrentMethod}
-                    and defined $MethodInfo{$LibVersion}{$CurrentMethod}{"Param"}
-                    and defined $MethodInfo{$LibVersion}{$CurrentMethod}{"Param"}{$ParamPos}
-                    and defined $MethodInfo{$LibVersion}{$CurrentMethod}{"Param"}{$ParamPos}{"Type"})
-                    {
-                        $MethodInfo{$LibVersion}{$CurrentMethod}{"Param"}{$ParamPos}{"Name"} = $PName;
-                        $ParamPos++;
-                    }
-                }
-            }
-        }
-        elsif($CurrentClass and $LINE=~/(\A|\s+)([^\s]+)\s+([^\s]+)\s*\((.*)\)\s*(throws\s*([^\s]+)|)\s*;\Z/)
-        { # attributes of methods and constructors
-            my (%MethodAttr, $ParamsLine, $Exceptions) = ();
-            
-            $InParamTable = 0; # read the first local variable table
-            $InCode = 0; # read the first code
-            $InAnnotations_Method = 1;
-            $InAnnotations_Class = 0;
-            
-            ($MethodAttr{"Return"}, $MethodAttr{"ShortName"}, $ParamsLine, $Exceptions) = ($2, $3, $4, $6);
-            $MethodAttr{"ShortName"}=~s/#/./g;
-            
-            if($Exceptions)
-            {
-                foreach my $E (split(/,/, $Exceptions)) {
-                    $MethodAttr{"Exceptions"}{registerType($E, $LibVersion)} = 1;
-                }
-            }
-            if($LINE=~/(\A|\s+)(public|protected|private)\s+/) {
-                $MethodAttr{"Access"} = $2;
-            }
-            else {
-                $MethodAttr{"Access"} = "package-private";
-            }
-            $MethodAttr{"Class"} = registerType($TypeAttr{"Name"}, $LibVersion);
-            if($MethodAttr{"ShortName"}=~/\A(|(.+)\.)\Q$CurrentClass\E\Z/)
-            {
-                if($2)
-                {
-                    $MethodAttr{"Package"} = $2;
-                    $CurrentPackage = $MethodAttr{"Package"};
-                    $MethodAttr{"ShortName"} = $CurrentClass;
-                }
-                $MethodAttr{"Constructor"} = 1;
-                delete($MethodAttr{"Return"});
-            }
-            else
-            {
-                $MethodAttr{"Return"} = registerType($MethodAttr{"Return"}, $LibVersion);
-            }
-            
-            my @Params = separate_Params($ParamsLine, 0, 1);
-            
-            $ParamPos = 0;
-            foreach my $ParamTName (@Params)
-            {
-                %{$MethodAttr{"Param"}{$ParamPos}} = ("Type"=>registerType($ParamTName, $LibVersion), "Name"=>"p".($ParamPos+1));
-                $ParamPos++;
-            }
-            $ParamPos = 0;
-            if(not $MethodAttr{"Constructor"})
-            { # methods
-                if($CurrentPackage) {
-                    $MethodAttr{"Package"} = $CurrentPackage;
-                }
-                if($LINE=~/(\A|\s+)abstract\s+/) {
-                    $MethodAttr{"Abstract"} = 1;
-                }
-                if($LINE=~/(\A|\s+)final\s+/) {
-                    $MethodAttr{"Final"} = 1;
-                }
-                if($LINE=~/(\A|\s+)static\s+/) {
-                    $MethodAttr{"Static"} = 1;
-                }
-                if($LINE=~/(\A|\s+)native\s+/) {
-                    $MethodAttr{"Native"} = 1;
-                }
-                if($LINE=~/(\A|\s+)synchronized\s+/) {
-                    $MethodAttr{"Synchronized"} = 1;
-                }
-            }
-            
-            # read the Signature
-            if($LINE_N=~/(Signature|descriptor):\s*(.+)\Z/i)
-            { # create run-time unique name ( java/io/PrintStream.println (Ljava/lang/String;)V )
-                if($MethodAttr{"Constructor"}) {
-                    $CurrentMethod = $CurrentClass.".\"<init>\":".$2;
-                }
-                else {
-                    $CurrentMethod = $CurrentClass.".".$MethodAttr{"ShortName"}.":".$2;
-                }
-                if(my $PackageName = get_SFormat($CurrentPackage)) {
-                    $CurrentMethod = $PackageName."/".$CurrentMethod;
-                }
-                
-                $LineNum++;
-            }
-            else {
-                exitStatus("Error", "internal error - can't read method signature");
-            }
-            
-            $MethodAttr{"Archive"} = $ArchiveName;
-            if($CurrentMethod)
-            {
-                %{$MethodInfo{$LibVersion}{$CurrentMethod}} = %MethodAttr;
-                if($MethodAttr{"Access"}=~/public|protected/)
-                {
-                    $Class_Methods{$LibVersion}{$TypeAttr{"Name"}}{$CurrentMethod} = 1;
-                    if($MethodAttr{"Abstract"}) {
-                        $Class_AbstractMethods{$LibVersion}{$TypeAttr{"Name"}}{$CurrentMethod} = 1;
-                    }
-                }
-            }
-        }
-        elsif($CurrentClass and $LINE=~/(\A|\s+)([^\s]+)\s+(\w+);\Z/)
-        { # fields
-            my ($TName, $FName) = ($2, $3);
-            $TypeAttr{"Fields"}{$FName}{"Type"} = registerType($TName, $LibVersion);
-            if($LINE=~/(\A|\s+)final\s+/) {
-                $TypeAttr{"Fields"}{$FName}{"Final"} = 1;
-            }
-            if($LINE=~/(\A|\s+)static\s+/) {
-                $TypeAttr{"Fields"}{$FName}{"Static"} = 1;
-            }
-            if($LINE=~/(\A|\s+)transient\s+/) {
-                $TypeAttr{"Fields"}{$FName}{"Transient"} = 1;
-            }
-            if($LINE=~/(\A|\s+)volatile\s+/) {
-                $TypeAttr{"Fields"}{$FName}{"Volatile"} = 1;
-            }
-            if($LINE=~/(\A|\s+)(public|protected|private)\s+/) {
-                $TypeAttr{"Fields"}{$FName}{"Access"} = $2;
+        my $Report = "<!-\- $MetaData -\->\n".composeHTML_Head($Level, $Title, $Keywords, $Description, $CssStyles, $JScripts)."<body><a name='Top'></a>";
+        $Report .= getReportHeader($Level)."\n".$Summary."\n";
+        $Report .= getReportAdded($Level).getReportRemoved($Level);
+        $Report .= getReportProblems("High", $Level).getReportProblems("Medium", $Level).getReportProblems("Low", $Level).getReportProblems("Safe", $Level);
+        $Report .= getSourceInfo()."<br/><br/><br/>\n";
+        $Report .= getReportFooter();
+        $Report .= "\n</body></html>";
+        return $Report;
+    }
+}
+
+sub getReportFooter()
+{
+    my $Footer = "";
+    $Footer .= "<hr/>";
+    $Footer .= "<div class='footer' align='right'><i>Generated by ";
+    $Footer .= "<a href='".$HomePage{"Dev"}."'>Java API Compliance Checker</a> $TOOL_VERSION  ";
+    $Footer .= "</i></div>";
+    $Footer .= "<br/>";
+    return $Footer;
+}
+
+sub getReportProblems($$)
+{
+    my ($Priority, $Level) = @_;
+    my $Report = getReportTypeProblems($Priority, $Level);
+    if(my $MProblems = getReportMethodProblems($Priority, $Level)) {
+        $Report .= $MProblems;
+    }
+    if($Report)
+    {
+        if($In::Opt{"JoinReport"})
+        {
+            if($Priority eq "Safe") {
+                $Report = "<a name=\'Other_".$Level."_Changes\'></a>".$Report;
             }
             else {
-                $TypeAttr{"Fields"}{$FName}{"Access"} = "package-private";
-            }
-            if($TypeAttr{"Fields"}{$FName}{"Access"}!~/private/) {
-                $Class_Fields{$LibVersion}{$TypeAttr{"Name"}}{$FName}=$TypeAttr{"Fields"}{$FName}{"Type"};
-            }
-            $TypeAttr{"Fields"}{$FName}{"Pos"} = $FieldPos++;
-            
-            # read the Signature
-            if($Content[$LineNum++]=~/(Signature|descriptor):\s*(.+)\Z/i)
-            {
-                my $FSignature = $2;
-                if(my $PackageName = get_SFormat($CurrentPackage)) {
-                    $TypeAttr{"Fields"}{$FName}{"Mangled"} = $PackageName."/".$CurrentClass.".".$FName.":".$FSignature;
-                }
-            }
-            if($Content[$LineNum]=~/flags:/i)
-            { # flags: ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ANNOTATION
-                $LineNum++;
-            }
-            
-            # read the Value
-            if($Content[$LineNum]=~/Constant\s*value:\s*([^\s]+)\s(.*)\Z/i)
-            {
-              # Java 6: Constant value: ...
-              # Java 7: ConstantValue: ...
-                $LineNum+=1;
-                my ($TName, $Value) = ($1, $2);
-                if($Value)
-                {
-                    if($Value=~s/Deprecated:\s*true\Z//g) {
-                        # deprecated values: ?
-                    }
-                    $TypeAttr{"Fields"}{$FName}{"Value"} = $Value;
-                }
-                elsif($TName eq "String") {
-                    $TypeAttr{"Fields"}{$FName}{"Value"} = "\@EMPTY_STRING\@";
-                }
+                $Report = "<a name=\'".$Priority."_Risk_".$Level."_Problems\'></a>".$Report;
             }
         }
-        elsif($LINE=~/(\A|\s+)(class|interface)\s+([^\s\{]+)(\s+|\{|\Z)/)
-        { # properties of classes and interfaces
-            if($TypeAttr{"Name"})
-            { # register previous
-                %{$TypeInfo{$LibVersion}{registerType($TypeAttr{"Name"}, $LibVersion)}} = %TypeAttr;
-            }
-            
-            %TypeAttr = ("Type"=>$2, "Name"=>$3); # reset previous class
-            %AnnotationName = (); # reset annotations of the class
-            %AnnotationNum = (); # support for Java 7
-            $InAnnotations_Class = 1;
-            
-            $FieldPos = 0; # reset field position
-            $CurrentMethod = ""; # reset current method
-            $TypeAttr{"Archive"} = $ArchiveName;
-            if($TypeAttr{"Name"}=~/\A(.+)\.([^.]+)\Z/)
-            {
-                $CurrentClass = $2;
-                $TypeAttr{"Package"} = $1;
-                $CurrentPackage = $TypeAttr{"Package"};
-            }
-            else
-            {
-                $CurrentClass = $TypeAttr{"Name"};
-                $CurrentPackage = "";
-            }
-            if($CurrentClass=~s/#/./g)
-            { # javax.swing.text.GlyphView.GlyphPainter <=> GlyphView$GlyphPainter
-                $TypeAttr{"Name"}=~s/#/./g;
-            }
-            if($LINE=~/(\A|\s+)(public|protected|private)\s+/) {
-                $TypeAttr{"Access"} = $2;
+        else
+        {
+            if($Priority eq "Safe") {
+                $Report = "<a name=\'Other_Changes\'></a>".$Report;
             }
             else {
-                $TypeAttr{"Access"} = "package-private";
-            }
-            if($LINE=~/\s+extends\s+([^\s\{]+)/)
-            {
-                my $Extended = $1;
-                
-                if($TypeAttr{"Type"} eq "class")
-                {
-                    if($Extended ne $CurrentPackage.".".$CurrentClass) {
-                        $TypeAttr{"SuperClass"} = registerType($Extended, $LibVersion);
-                    }
-                }
-                elsif($TypeAttr{"Type"} eq "interface")
-                {
-                    my @Elems = separate_Params($Extended, 0, 0);
-                    foreach my $SuperInterface (@Elems)
-                    {
-                        if($SuperInterface ne $CurrentPackage.".".$CurrentClass) {
-                            $TypeAttr{"SuperInterface"}{registerType($SuperInterface, $LibVersion)} = 1;
-                        }
-                        
-                        if($SuperInterface eq "java.lang.annotation.Annotation") {
-                            $TypeAttr{"Annotation"} = 1;
-                        }
-                    }
-                }
-            }
-            if($LINE=~/\s+implements\s+([^\s\{]+)/)
-            {
-                my $Implemented = $1;
-                my @Elems = separate_Params($Implemented, 0, 0);
-                
-                foreach my $SuperInterface (@Elems) {
-                    $TypeAttr{"SuperInterface"}{registerType($SuperInterface, $LibVersion)} = 1;
-                }
-            }
-            if($LINE=~/(\A|\s+)abstract\s+/) {
-                $TypeAttr{"Abstract"} = 1;
-            }
-            if($LINE=~/(\A|\s+)final\s+/) {
-                $TypeAttr{"Final"} = 1;
-            }
-            if($LINE=~/(\A|\s+)static\s+/) {
-                $TypeAttr{"Static"} = 1;
-            }
-        }
-        elsif(index($LINE, "Deprecated: true")!=-1
-        or index($LINE, "Deprecated: length")!=-1)
-        { # deprecated method or class
-            if($CurrentMethod) {
-                $MethodInfo{$LibVersion}{$CurrentMethod}{"Deprecated"} = 1;
-            }
-            elsif($CurrentClass) {
-                $TypeAttr{"Deprecated"} = 1;
+                $Report = "<a name=\'".$Priority."_Risk_Problems\'></a>".$Report;
             }
         }
-        elsif(index($LINE, "RuntimeInvisibleAnnotations")!=-1
-        or index($LINE, "RuntimeVisibleAnnotations")!=-1)
-        {
-            $InAnnotations = 1;
-            $InCode = 0;
-        }
-        elsif(defined $InAnnotations and index($LINE, "InnerClasses")!=-1) {
-            $InAnnotations = undef;
-        }
-        else
-        {
-            # unparsed
-        }
     }
-    if($TypeAttr{"Name"})
-    { # register last
-        %{$TypeInfo{$LibVersion}{registerType($TypeAttr{"Name"}, $LibVersion)}} = %TypeAttr;
+    return $Report;
+}
+
+sub composeHTML_Head($$$$$$)
+{
+    my ($Level, $Title, $Keywords, $Description, $Styles, $Scripts) = @_;
+    
+    my $Head = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
+    $Head .= "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n";
+    $Head .= "<head>\n";
+    $Head .= "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n";
+    $Head .= "<meta name=\"keywords\" content=\"$Keywords\" />\n";
+    $Head .= "<meta name=\"description\" content=\"$Description\" />\n";
+    
+    my $RPath = getReportPath($Level);
+    
+    if(defined $In::Opt{"ExternCss"}) {
+        $Head .= "<link rel=\"stylesheet\" type=\"text/css\" href=\"".getRelPath($In::Opt{"ExternCss"}, $RPath)."\" />\n";
+    }
+    
+    if(defined $In::Opt{"ExternJs"}) {
+        $Head .= "<script type=\"text/javascript\" src=\"".getRelPath($In::Opt{"ExternJs"}, $RPath)."\"></script>\n";
+    }
+    
+    $Head .= "<title>$Title</title>\n";
+    
+    if(not defined $In::Opt{"ExternCss"}) {
+        $Head .= "<style type=\"text/css\">\n$Styles\n</style>\n";
+    }
+    
+    if(not defined $In::Opt{"ExternJs"}) {
+        $Head .= "<script type=\"text/javascript\" language=\"JavaScript\">\n<!--\n$Scripts\n-->\n</script>\n";
     }
+    
+    $Head .= "</head>\n";
+    
+    return $Head;
 }
 
-sub separate_Params($$$)
+sub insertIDs($)
 {
-    my ($Params, $Comma, $Sp) = @_;
-    my @Parts = ();
-    my %B = ( "("=>0, "<"=>0, ")"=>0, ">"=>0 );
-    my $Part = 0;
-    foreach my $Pos (0 .. length($Params) - 1)
+    my $Text = $_[0];
+    while($Text=~/CONTENT_ID/)
     {
-        my $S = substr($Params, $Pos, 1);
-        if(defined $B{$S}) {
-            $B{$S} += 1;
-        }
-        if($S eq "," and
-        $B{"("}==$B{")"} and $B{"<"}==$B{">"})
-        {
-            if($Comma)
-            { # include comma
-                $Parts[$Part] .= $S;
-            }
-            $Part += 1;
-        }
-        else {
-            $Parts[$Part] .= $S;
-        }
-    }
-    if(not $Sp)
-    { # remove spaces
-        foreach (@Parts)
+        if(int($Content_Counter)%2)
         {
-            s/\A //g;
-            s/ \Z//g;
+            $ContentID -= 1;
         }
+        $Text=~s/CONTENT_ID/c_$ContentID/;
+        $ContentID += 1;
+        $Content_Counter += 1;
     }
-    return @Parts;
+    return $Text;
 }
 
 sub registerUsage($$)
 {
-    my ($TypeId, $LibVersion) = @_;
-    $Class_Constructed{$LibVersion}{$TypeId} = 1;
-    if(my $BaseId = $TypeInfo{$LibVersion}{$TypeId}{"BaseType"}) {
-        $Class_Constructed{$LibVersion}{$BaseId} = 1;
+    my ($TypeId, $LVer) = @_;
+    $Class_Constructed{$LVer}{$TypeId} = 1;
+    if(my $BaseId = $TypeInfo{$LVer}{$TypeId}{"BaseType"}) {
+        $Class_Constructed{$LVer}{$BaseId} = 1;
     }
 }
 
 sub checkVoidMethod($)
 {
     my $Method = $_[0];
-    return "" if(not $Method);
+    
     if($Method=~s/\)(.+)\Z/\)V/g) {
         return $Method;
     }
-    else {
-        return "";
-    }
+    
+    return undef;
 }
 
 sub detectAdded()
@@ -7833,33 +3749,33 @@ sub detectAdded()
             }
             
             my $ClassId = $MethodInfo{2}{$Method}{"Class"};
-            my %Class = get_Type($ClassId, 2);
+            my $CName = getTypeName($ClassId, 2);
             
-            $CheckedTypes{$Class{"Name"}} = 1;
+            $CheckedTypes{$CName} = 1;
             $CheckedMethods{$Method} = 1;
             
             if(not $MethodInfo{2}{$Method}{"Constructor"}
-            and my $Overridden = findMethod($Method, 2, $Class{"Name"}, 2))
+            and my $Overridden = findMethod($Method, 2, $CName, 2))
             {
                 if(defined $MethodInfo{1}{$Overridden}
-                and get_TypeType($ClassId, 2) eq "class" and $TName_Tid{1}{$Class{"Name"}})
+                and getTypeType($ClassId, 2) eq "class" and $TName_Tid{1}{$CName})
                 { # class should exist in previous version
-                    %{$CompatProblems{$Overridden}{"Class_Overridden_Method"}{"this.".get_SFormat($Method)}}=(
-                        "Type_Name"=>$Class{"Name"},
+                    %{$CompatProblems{$Overridden}{"Class_Overridden_Method"}{"this.".getSFormat($Method)}}=(
+                        "Type_Name"=>$CName,
                         "Target"=>$MethodInfo{2}{$Method}{"Signature"},
                         "Old_Value"=>$Overridden,
-                        "New_Value"=>$Method  );
+                        "New_Value"=>$Method);
                 }
             }
             if($MethodInfo{2}{$Method}{"Abstract"}) {
-                $AddedMethod_Abstract{$Class{"Name"}}{$Method} = 1;
+                $AddedMethod_Abstract{$CName}{$Method} = 1;
             }
             
             %{$CompatProblems{$Method}{"Added_Method"}{""}}=();
             
             if(not $MethodInfo{2}{$Method}{"Constructor"})
             {
-                if(get_TypeName($MethodInfo{2}{$Method}{"Return"}, 2) ne "void"
+                if(getTypeName($MethodInfo{2}{$Method}{"Return"}, 2) ne "void"
                 and my $VoidMethod = checkVoidMethod($Method))
                 {
                     if(defined $MethodInfo{1}{$VoidMethod})
@@ -7868,7 +3784,7 @@ sub detectAdded()
                         $ChangedReturnFromVoid{$Method} = 1;
                         
                         %{$CompatProblems{$VoidMethod}{"Changed_Method_Return_From_Void"}{""}}=(
-                            "New_Value"=>get_TypeName($MethodInfo{2}{$Method}{"Return"}, 2)
+                            "New_Value"=>getTypeName($MethodInfo{2}{$Method}{"Return"}, 2)
                         );
                     }
                 }
@@ -7888,28 +3804,28 @@ sub detectRemoved()
             }
             
             my $ClassId = $MethodInfo{1}{$Method}{"Class"};
-            my %Class = get_Type($ClassId, 1);
+            my $CName = getTypeName($ClassId, 1);
             
-            $CheckedTypes{$Class{"Name"}} = 1;
+            $CheckedTypes{$CName} = 1;
             $CheckedMethods{$Method} = 1;
             
             if(not $MethodInfo{1}{$Method}{"Constructor"}
-            and my $MovedUp = findMethod($Method, 1, $Class{"Name"}, 2))
+            and my $MovedUp = findMethod($Method, 1, $CName, 2))
             {
-                if(get_TypeType($ClassId, 1) eq "class"
-                and not $MethodInfo{1}{$Method}{"Abstract"} and $TName_Tid{2}{$Class{"Name"}})
+                if(getTypeType($ClassId, 1) eq "class"
+                and not $MethodInfo{1}{$Method}{"Abstract"} and $TName_Tid{2}{$CName})
                 {# class should exist in newer version
-                    %{$CompatProblems{$Method}{"Class_Method_Moved_Up_Hierarchy"}{"this.".get_SFormat($MovedUp)}}=(
-                        "Type_Name"=>$Class{"Name"},
+                    %{$CompatProblems{$Method}{"Class_Method_Moved_Up_Hierarchy"}{"this.".getSFormat($MovedUp)}}=(
+                        "Type_Name"=>$CName,
                         "Target"=>$MethodInfo{2}{$MovedUp}{"Signature"},
                         "Old_Value"=>$Method,
-                        "New_Value"=>$MovedUp  );
+                        "New_Value"=>$MovedUp);
                 }
             }
             else
             {
                 if($MethodInfo{1}{$Method}{"Abstract"}) {
-                    $RemovedMethod_Abstract{$Class{"Name"}}{$Method} = 1;
+                    $RemovedMethod_Abstract{$CName}{$Method} = 1;
                 }
                 %{$CompatProblems{$Method}{"Removed_Method"}{""}}=();
             }
@@ -7917,314 +3833,124 @@ sub detectRemoved()
     }
 }
 
-sub getArchives($)
-{
-    my $LibVersion = $_[0];
-    my @Paths = ();
-    foreach my $Path (split(/\s*\n\s*/, $Descriptor{$LibVersion}{"Archives"}))
-    {
-        if(not -e $Path) {
-            exitStatus("Access_Error", "can't access \'$Path\'");
-        }
-        foreach (getArchivePaths($Path, $LibVersion)) {
-            push(@Paths, $_);
-        }
-    }
-    return @Paths;
-}
-
 sub getArchivePaths($$)
 {
-    my ($Dest, $LibVersion) = @_;
+    my ($Dest, $LVer) = @_;
     if(-f $Dest) {
         return ($Dest);
     }
     elsif(-d $Dest)
     {
         $Dest=~s/[\/\\]+\Z//g;
-        my @AllClasses = ();
-        foreach my $Path (cmd_find($Dest,"","*\.jar",""))
+        next if(not $Dest);
+        
+        my @Archives = ();
+        foreach my $Path (cmdFind($Dest, "", "*\\.jar"))
         {
-            next if(ignore_path($Path, $Dest));
-            push(@AllClasses, resolve_symlink($Path));
+            next if(ignorePath($Path, $Dest));
+            push(@Archives, realpath_F($Path));
         }
-        return @AllClasses;
+        return @Archives;
     }
     return ();
 }
 
-sub isCyclical($$)
-{
+sub isCyclical($$) {
     return (grep {$_ eq $_[1]} @{$_[0]});
 }
 
-sub read_symlink($)
+sub mergeAPIs($$)
 {
-    my $Path = $_[0];
-    return "" if(not $Path or not -f $Path);
-    return $Cache{"read_symlink"}{$Path} if(defined $Cache{"read_symlink"}{$Path});
-    if(my $ReadlinkCmd = get_CmdPath("readlink"))
-    {
-        my $Res = `$ReadlinkCmd -n \"$Path\"`;
-        return ($Cache{"read_symlink"}{$Path} = $Res);
-    }
-    elsif(my $FileCmd = get_CmdPath("file"))
+    my ($LVer, $Dep) = @_;
+    
+    foreach my $TId (keys(%{$Dep->{"TypeInfo"}}))
     {
-        my $Info = `$FileCmd \"$Path\"`;
-        if($Info=~/symbolic\s+link\s+to\s+['`"]*([\w\d\.\-\/\\]+)['`"]*/i) {
-            return ($Cache{"read_symlink"}{$Path} = $1);
-        }
+        $TypeInfo{$LVer}{$TId} = $Dep->{"TypeInfo"}{$TId};
+        $TypeInfo{$LVer}{$TId}{"Dep"} = 1;
     }
-    return ($Cache{"read_symlink"}{$Path} = "");
-}
-
-sub resolve_symlink($)
-{
-    my $Path = $_[0];
-    return "" if(not $Path or not -f $Path);
-    return $Path if(isCyclical(\@RecurSymlink, $Path));
-    push(@RecurSymlink, $Path);
-    if(-l $Path and my $Redirect=read_symlink($Path))
+    
+    my $MInfo = $Dep->{"MethodInfo"};
+    foreach my $M_Id (keys(%{$MInfo}))
     {
-        if(is_abs($Redirect))
-        {
-            my $Res = resolve_symlink($Redirect);
-            pop(@RecurSymlink);
-            return $Res;
-        }
-        elsif($Redirect=~/\.\.[\/\\]/)
-        {
-            $Redirect = joinPath(get_dirname($Path),$Redirect);
-            while($Redirect=~s&(/|\\)[^\/\\]+(\/|\\)\.\.(\/|\\)&$1&){};
-            my $Res = resolve_symlink($Redirect);
-            pop(@RecurSymlink);
-            return $Res;
-        }
-        elsif(-f get_dirname($Path)."/".$Redirect)
+        if(my $Name = $MInfo->{$M_Id}{"Name"})
         {
-            my $Res = resolve_symlink(joinPath(get_dirname($Path),$Redirect));
-            pop(@RecurSymlink);
-            return $Res;
+            $MethodInfo{$LVer}{$Name} = $MInfo->{$M_Id};
+            $MethodInfo{$LVer}{$Name}{"Dep"} = 1;
         }
-        return $Path;
-    }
-    else
-    {
-        pop(@RecurSymlink);
-        return $Path;
     }
 }
 
-sub cmpVersions($$)
-{# compare two version strings in dotted-numeric format
-    my ($V1, $V2) = @_;
-    return 0 if($V1 eq $V2);
-    my @V1Parts = split(/\./, $V1);
-    my @V2Parts = split(/\./, $V2);
-    for (my $i = 0; $i <= $#V1Parts && $i <= $#V2Parts; $i++) {
-        return -1 if(int($V1Parts[$i]) < int($V2Parts[$i]));
-        return 1 if(int($V1Parts[$i]) > int($V2Parts[$i]));
-    }
-    return -1 if($#V1Parts < $#V2Parts);
-    return 1 if($#V1Parts > $#V2Parts);
-    return 0;
-}
-
-sub majorVersion($)
+sub readAPIDump($$$)
 {
-    my $Version = $_[0];
-    return 0 if(not $Version);
-    my @VParts = split(/\./, $Version);
-    return $VParts[0];
-}
-
-sub isDump($)
-{
-    if($_[0]=~/\A(.+)\.(api|dump|apidump)(\Q.tar.gz\E|\Q.zip\E|)\Z/)
-    { # returns a name of package
-        return $1;
+    my ($LVer, $Path, $Subj) = @_;
+    
+    if(not $In::Opt{"CountMethods"}) {
+        printMsg("INFO", "Reading API dump ($LVer) ...");
     }
-    return 0;
-}
-
-sub isDumpFile($)
-{
-    if($_[0]=~/\.(api|dump|apidump)\Z/)
-    {
-        return 1;
+    
+    my $FilePath = "";
+    if(isDump_U($Path))
+    { # input *.dump
+        $FilePath = $Path;
+    }
+    else
+    { # input *.dump.tar.gz
+        $FilePath = unpackDump($Path);
+        if(not isDump_U($FilePath)) {
+            exitStatus("Invalid_Dump", "specified API dump \'$Path\' is not valid, try to recreate it");
+        }
     }
-    return 0;
-}
-
-sub read_API_Dump($$$)
-{
-    my ($LibVersion, $Path, $Subj) = @_;
-    return if(not $LibVersion or not -e $Path);
     
-    my $FilePath = unpackDump($Path);
-    if(not isDumpFile($FilePath)) {
-        exitStatus("Invalid_Dump", "specified API dump \'$Path\' is not valid, try to recreate it");
+    my $APIRef = {};
+    
+    open(DUMP, $FilePath);
+    local $/ = undef;
+    my $Content = <DUMP>;
+    close(DUMP);
+    
+    if(getDirname($FilePath) eq $In::Opt{"Tmp"}."/unpack")
+    { # remove temp file
+        unlink($FilePath);
     }
-    my $Content = readFile($FilePath);
-    rmtree($TMP_DIR."/unpack");
     
     if($Content!~/};\s*\Z/) {
         exitStatus("Invalid_Dump", "specified API dump \'$Path\' is not valid, try to recreate it");
     }
-    my $APIDump = eval($Content);
-    if(not $APIDump) {
-        exitStatus("Error", "internal error - eval() procedure seem to not working correctly, try to remove 'use strict' and try again");
-    }
-    my $DumpVersion = $APIDump->{"API_DUMP_VERSION"};
-    if(majorVersion($DumpVersion) ne $API_DUMP_MAJOR)
-    { # compatible with the dumps of the same major version
-        exitStatus("Dump_Version", "incompatible version $DumpVersion of specified API dump (allowed only $API_DUMP_MAJOR.0<=V<=$API_DUMP_MAJOR.9)");
-    }
     
-    if(defined $TypeInfo{$LibVersion})
-    {
-        foreach my $TId (keys(%{$APIDump->{"TypeInfo"}}))
-        {
-            $TypeInfo{$LibVersion}{$TId} = $APIDump->{"TypeInfo"}{$TId};
-        }
-    }
-    else {
-        $TypeInfo{$LibVersion} = $APIDump->{"TypeInfo"};
-    }
+    $APIRef = eval($Content);
     
-    foreach my $TypeId (keys(%{$APIDump->{"TypeInfo"}}))
-    {
-        my %TypeAttr = %{$TypeInfo{$LibVersion}{$TypeId}};
-        $TName_Tid{$LibVersion}{$TypeAttr{"Name"}} = $TypeId;
-        
-        if($Subj ne "Dep")
-        {
-            if(my $Archive = $TypeAttr{"Archive"}) {
-                $LibArchives{$LibVersion}{$Archive} = 1;
-            }
-        }
-        
-        foreach my $FieldName (keys(%{$TypeAttr{"Fields"}}))
-        {
-            if($TypeAttr{"Fields"}{$FieldName}{"Access"}=~/public|protected/) {
-                $Class_Fields{$LibVersion}{$TypeAttr{"Name"}}{$FieldName} = $TypeAttr{"Fields"}{$FieldName}{"Type"};
-            }
-        }
-        
-        if($Subj eq "Dep") {
-            $TypeInfo{$LibVersion}{$TypeId}{"Dep"} = 1;
-        }
-    }
-    my $MInfo = $APIDump->{"MethodInfo"};
-    foreach my $M_Id (keys(%{$MInfo}))
-    {
-        my $Name = $MInfo->{$M_Id}{"Name"};
-        $MethodInfo{$LibVersion}{$Name} = $MInfo->{$M_Id};
-        
-        if($Subj eq "Dep") {
-            $MethodInfo{$LibVersion}{$Name}{"Dep"} = 1;
-        }
+    if(not $APIRef) {
+        exitStatus("Error", "internal error - eval() procedure seem to not working correctly, try to remove 'use strict' and try again");
     }
     
-    my $MUsed = $APIDump->{"MethodUsed"};
-    foreach my $M_Id (keys(%{$MUsed}))
-    {
-        my $Name = $MUsed->{$M_Id}{"Name"};
-        $MethodUsed{$LibVersion}{$Name} = $MUsed->{$M_Id}{"Used"};
-    }
+    my $APIVer = $APIRef->{"API_DUMP_VERSION"};
     
-    foreach my $Method (keys(%{$MethodInfo{$LibVersion}}))
+    if($APIVer)
     {
-        if(my $ClassId = $MethodInfo{$LibVersion}{$Method}{"Class"}
-        and $MethodInfo{$LibVersion}{$Method}{"Access"}=~/public|protected/)
-        {
-            $Class_Methods{$LibVersion}{get_TypeName($ClassId, $LibVersion)}{$Method} = 1;
-            if($MethodInfo{$LibVersion}{$Method}{"Abstract"}) {
-                $Class_AbstractMethods{$LibVersion}{get_TypeName($ClassId, $LibVersion)}{$Method} = 1;
-            }
+        if(cmpVersions($APIVer, $API_DUMP_VERSION)>0)
+        { # future formats
+            exitStatus("Dump_Version", "the versions of the API dump is newer than version of the tool");
         }
     }
     
-    # $FieldUsed{$LibVersion} = $APIDump->{"FieldUsed"};
-    
-    if(keys(%{$LibArchives{$LibVersion}})) {
-        $Descriptor{$LibVersion}{"Archives"} = "OK";
+    if(cmpVersions($APIVer, $API_DUMP_VERSION_MIN)<0) {
+        exitStatus("Dump_Version", "the version of the API dump is too old and unsupported anymore, please regenerate it");
     }
-    $Descriptor{$LibVersion}{"Version"} = $APIDump->{"LibraryVersion"};
-    $Descriptor{$LibVersion}{"Dump"} = 1;
-}
-
-sub createDescriptor($$)
-{
-    my ($LibVersion, $Path) = @_;
-    return if(not $LibVersion or not $Path or not -e $Path);
     
-    if(isDump($Path))
-    { # API dump
-        read_API_Dump($LibVersion, $Path, "Main");
-    }
-    else
+    if($Subj ne "Dep")
     {
-        if(-d $Path or $Path=~/\.jar\Z/)
-        {
-            readDescriptor($LibVersion,"
-              <version>
-                  ".$TargetVersion{$LibVersion}."
-              </version>
-              
-              <archives>
-                  $Path
-              </archives>");
-        }
-        else
-        { # standard XML descriptor
-            readDescriptor($LibVersion, readFile($Path));
-        }
+        $In::Desc{$LVer}{"Version"} = $APIRef->{"LibraryVersion"};
+        $In::Desc{$LVer}{"Dump"} = 1;
     }
     
-    if(my $Dep = $DepDump{$LibVersion}) {
-        read_API_Dump($LibVersion, $Dep, "Dep");
-    }
-}
-
-sub get_version($)
-{
-    my $Cmd = $_[0];
-    return "" if(not $Cmd);
-    my $Version = `$Cmd --version 2>\"$TMP_DIR/null\"`;
-    return $Version;
-}
-
-sub get_depth($)
-{
-    if(defined $Cache{"get_depth"}{$_[0]}) {
-        return $Cache{"get_depth"}{$_[0]}
-    }
-    return ($Cache{"get_depth"}{$_[0]} = ($_[0]=~tr![\/\\]|\:\:!!));
-}
-
-sub show_time_interval($)
-{
-    my $Interval = $_[0];
-    my $Hr = int($Interval/3600);
-    my $Min = int($Interval/60)-$Hr*60;
-    my $Sec = $Interval-$Hr*3600-$Min*60;
-    if($Hr) {
-        return "$Hr hr, $Min min, $Sec sec";
-    }
-    elsif($Min) {
-        return "$Min min, $Sec sec";
-    }
-    else {
-        return "$Sec sec";
-    }
+    return $APIRef;
 }
 
 sub checkVersionNum($$)
 {
-    my ($LibVersion, $Path) = @_;
+    my ($LVer, $Path) = @_;
     
-    if($TargetVersion{$LibVersion}) {
+    if($In::Desc{$LVer}{"TargetVersion"}) {
         return;
     }
     
@@ -8235,11 +3961,11 @@ sub checkVersionNum($$)
     my $Ver = undef;
     
     if(not defined $Ver) {
-        $Ver = getManifestVersion(get_abs_path($Path));
+        $Ver = getManifestVersion(getAbsPath($Path));
     }
     
     if(not defined $Ver) {
-        $Ver = getPkgVersion(get_filename($Path));
+        $Ver = getPkgVersion(getFilename($Path));
     }
     
     if(not defined $Ver) {
@@ -8248,13 +3974,13 @@ sub checkVersionNum($$)
     
     if(not defined $Ver)
     {
-        if($DumpAPI)
+        if($In::Opt{"DumpAPI"})
         {
             $Ver = "XYZ";
         }
         else
         {
-            if($LibVersion==1) {
+            if($LVer==1) {
                 $Ver = "X";
             }
             else {
@@ -8263,13 +3989,13 @@ sub checkVersionNum($$)
         }
     }
     
-    $TargetVersion{$LibVersion} = $Ver;
+    $In::Desc{$LVer}{"TargetVersion"} = $Ver;
     
-    if($DumpAPI) {
+    if($In::Opt{"DumpAPI"}) {
         printMsg("WARNING", "set version number to $Ver (use -vnum option to change it)");
     }
     else {
-        printMsg("WARNING", "set #$LibVersion version number to $Ver (use --v$LibVersion=NUM option to change it)");
+        printMsg("WARNING", "set #$LVer version number to $Ver (use --v$LVer=NUM option to change it)");
     }
 }
 
@@ -8277,21 +4003,26 @@ sub getManifestVersion($)
 {
     my $Path = $_[0];
     
-    if(not $Path or not -e $Path) {
-        return undef;
-    }
-    
-    my $JarCmd = get_CmdPath("jar");
+    my $JarCmd = getCmdPath("jar");
     if(not $JarCmd) {
         exitStatus("Not_Found", "can't find \"jar\" command");
     }
-    chdir($TMP_DIR);
+    
+    my $TmpDir = $In::Opt{"Tmp"};
+    
+    chdir($TmpDir);
     system($JarCmd." -xf \"$Path\" META-INF 2>null");
-    chdir($ORIG_DIR);
-    if(my $Content = readFile("$TMP_DIR/META-INF/MANIFEST.MF"))
+    chdir($In::Opt{"OrigDir"});
+    
+    my $Manifest = $TmpDir."/META-INF/MANIFEST.MF";
+    
+    if(-f $Manifest)
     {
-        if($Content=~/(\A|\s)Implementation\-Version:\s*(.+)(\s|\Z)/i) {
-            return $2;
+        if(my $Content = readFile($Manifest))
+        {
+            if($Content=~/(\A|\s)Implementation\-Version:\s*(.+)(\s|\Z)/i) {
+                return $2;
+            }
         }
     }
     return undef;
@@ -8320,57 +4051,23 @@ sub getPkgVersion($)
       # libsample-vN
         return ($1, $3);
     }
-    elsif($Name=~/\A(.+?)(\d[\d\.]*)\Z/i)
-    { # libsampleN
-        return ($1, $2);
-    }
-    elsif($Name=~/\A(.+)[\-\_](v|ver|)(\d.+?)\Z/i)
-    { # libsample-N
-      # libsample-vN
-        return ($1, $3);
-    }
-    elsif($Name=~/\A([a-z_\-]+)(\d.+?)\Z/i)
-    { # libsampleNb
-        return ($1, $2);
-    }
-    return (undef, undef);
-}
-
-sub get_OSgroup()
-{
-    if($Config{"osname"}=~/macos|darwin|rhapsody/i) {
-        return "macos";
-    }
-    elsif($Config{"osname"}=~/freebsd|openbsd|netbsd/i) {
-        return "bsd";
-    }
-    elsif($Config{"osname"}=~/haiku|beos/i) {
-        return "beos";
-    }
-    elsif($Config{"osname"}=~/symbian|epoc/i) {
-        return "symbian";
-    }
-    elsif($Config{"osname"}=~/win/i) {
-        return "windows";
-    }
-    else {
-        return $Config{"osname"};
+    elsif($Name=~/\A(.+?)(\d[\d\.]*)\Z/i)
+    { # libsampleN
+        return ($1, $2);
     }
-}
-
-sub get_ARG_MAX()
-{
-    if($OSgroup eq "windows") {
-        return 1990; # 8191, 2047
+    elsif($Name=~/\A(.+)[\-\_](v|ver|)(\d.+?)\Z/i)
+    { # libsample-N
+      # libsample-vN
+        return ($1, $3);
     }
-    else
-    { # Linux
-      # TODO: set max possible value (~131000)
-        return 32767;
+    elsif($Name=~/\A([a-z_\-]+)(\d.+?)\Z/i)
+    { # libsampleNb
+        return ($1, $2);
     }
+    return (undef, undef);
 }
 
-sub dump_sorting($)
+sub dumpSorting($)
 {
     my $Hash = $_[0];
     return [] if(not $Hash);
@@ -8386,392 +4083,629 @@ sub dump_sorting($)
     }
 }
 
-sub detect_bin_default_paths()
+sub printStatMsg($)
+{
+    my $Level = $_[0];
+    printMsg("INFO", "Total ".lc($Level)." compatibility problems: ".$RESULT{$Level}{"Problems"}.", warnings: ".$RESULT{$Level}{"Warnings"});
+}
+
+sub printReport()
 {
-    my $EnvPaths = $ENV{"PATH"};
-    if($OSgroup eq "beos") {
-        $EnvPaths.=":".$ENV{"BETOOLS"};
+    printMsg("INFO", "Creating compatibility report ...");
+    createReport();
+    if($In::Opt{"JoinReport"} or $In::Opt{"DoubleReport"})
+    {
+        if($RESULT{"Binary"}{"Problems"}
+        or $RESULT{"Source"}{"Problems"})
+        {
+            printMsg("INFO", "Binary compatibility: ".(100-$RESULT{"Binary"}{"Affected"})."\%");
+            printMsg("INFO", "Source compatibility: ".(100-$RESULT{"Source"}{"Affected"})."\%");
+        }
+        else
+        {
+            printMsg("INFO", "Binary compatibility: 100\%");
+            printMsg("INFO", "Source compatibility: 100\%");
+        }
+        printStatMsg("Binary");
+        printStatMsg("Source");
     }
-    elsif($OSgroup eq "windows"
-    and my $JHome = $ENV{"JAVA_HOME"}) {
-        $EnvPaths.=";$JHome\\bin";
+    elsif($In::Opt{"BinaryOnly"})
+    {
+        if($RESULT{"Binary"}{"Problems"}) {
+            printMsg("INFO", "Binary compatibility: ".(100-$RESULT{"Binary"}{"Affected"})."\%");
+        }
+        else {
+            printMsg("INFO", "Binary compatibility: 100\%");
+        }
+        printStatMsg("Binary");
+    }
+    elsif($In::Opt{"SourceOnly"})
+    {
+        if($RESULT{"Source"}{"Problems"}) {
+            printMsg("INFO", "Source compatibility: ".(100-$RESULT{"Source"}{"Affected"})."\%");
+        }
+        else {
+            printMsg("INFO", "Source compatibility: 100\%");
+        }
+        printStatMsg("Source");
     }
-    my $Sep = ($OSgroup eq "windows")?";":":|;";
-    foreach my $Path (sort {length($a)<=>length($b)} split(/$Sep/, $EnvPaths))
+    if($In::Opt{"JoinReport"})
     {
-        $Path=~s/[\/\\]+\Z//g;
-        next if(not $Path);
-        $DefaultBinPaths{$Path} = 1;
+        printMsg("INFO", "Report: ".getReportPath("Join"));
+    }
+    elsif($In::Opt{"DoubleReport"})
+    { # default
+        printMsg("INFO", "Report (BC): ".getReportPath("Binary"));
+        printMsg("INFO", "Report (SC): ".getReportPath("Source"));
+    }
+    elsif($In::Opt{"BinaryOnly"})
+    { # --binary
+        printMsg("INFO", "Report: ".getReportPath("Binary"));
+    }
+    elsif($In::Opt{"SourceOnly"})
+    { # --source
+        printMsg("INFO", "Report: ".getReportPath("Source"));
     }
 }
 
-sub detect_default_paths()
+sub getReportPath($)
 {
-    if(keys(%SystemPaths))
-    {# run once
-        return;
+    my $Level = $_[0];
+    my $Dir = "compat_reports/".$In::Opt{"TargetLib"}."/".$In::Desc{1}{"Version"}."_to_".$In::Desc{2}{"Version"};
+    if($Level eq "Binary")
+    {
+        if($In::Opt{"BinaryReportPath"})
+        { # --bin-report-path
+            return $In::Opt{"BinaryReportPath"};
+        }
+        elsif($In::Opt{"OutputReportPath"})
+        { # --report-path
+            return $In::Opt{"OutputReportPath"};
+        }
+        else
+        { # default
+            return $Dir."/bin_compat_report.html";
+        }
     }
-    
-    foreach my $Type (keys(%{$OS_AddPath{$OSgroup}}))
-    {# additional search paths
-        foreach my $Path (keys(%{$OS_AddPath{$OSgroup}{$Type}}))
-        {
-            next if(not -d $Path);
-            $SystemPaths{$Type}{$Path} = $OS_AddPath{$OSgroup}{$Type}{$Path};
+    elsif($Level eq "Source")
+    {
+        if($In::Opt{"SourceReportPath"})
+        { # --src-report-path
+            return $In::Opt{"SourceReportPath"};
+        }
+        elsif($In::Opt{"OutputReportPath"})
+        { # --report-path
+            return $In::Opt{"OutputReportPath"};
+        }
+        else
+        { # default
+            return $Dir."/src_compat_report.html";
         }
     }
-    if($OSgroup ne "windows")
+    else
     {
-        foreach my $Type ("include", "lib", "bin")
-        {# autodetecting system "devel" directories
-            foreach my $Path (cmd_find("/","d","*$Type*",1)) {
-                $SystemPaths{$Type}{$Path} = 1;
-            }
-            if(-d "/usr") {
-                foreach my $Path (cmd_find("/usr","d","*$Type*",1)) {
-                    $SystemPaths{$Type}{$Path} = 1;
-                }
-            }
+        if($In::Opt{"OutputReportPath"})
+        { # --report-path
+            return $In::Opt{"OutputReportPath"};
+        }
+        else
+        { # default
+            return $Dir."/compat_report.html";
         }
     }
-    detect_bin_default_paths();
-    foreach my $Path (keys(%DefaultBinPaths)) {
-        $SystemPaths{"bin"}{$Path} = $DefaultBinPaths{$Path};
+}
+
+sub unpackDump($)
+{
+    my $Path = $_[0];
+    
+    if(isDump_U($Path)) {
+        return $Path;
     }
     
-    if(not $TestSystem)
-    {
-        if(my $JavacCmd = get_CmdPath("javac"))
+    my $TmpDir = $In::Opt{"Tmp"};
+    
+    $Path = getAbsPath($Path);
+    $Path = pathFmt($Path);
+    
+    my ($Dir, $FileName) = sepPath($Path);
+    my $UnpackDir = $TmpDir."/unpack";
+    if(-d $UnpackDir) {
+        rmtree($UnpackDir);
+    }
+    mkpath($UnpackDir);
+    
+    if($FileName=~s/\Q.zip\E\Z//g)
+    { # *.zip
+        my $UnzipCmd = getCmdPath("unzip");
+        if(not $UnzipCmd) {
+            exitStatus("Not_Found", "can't find \"unzip\" command");
+        }
+        chdir($UnpackDir);
+        system("$UnzipCmd \"$Path\" >contents.txt");
+        if($?) {
+            exitStatus("Error", "can't extract \'$Path\'");
+        }
+        chdir($In::Opt{"OrigDir"});
+        my @Contents = ();
+        foreach (split("\n", readFile("$UnpackDir/contents.txt")))
         {
-            if(my $Ver = `$JavacCmd -version 2>&1`)
-            {
-                if($Ver=~/javac\s+(.+)/) {
-                    printMsg("INFO", "using Java ".$1);
-                }
+            if(/inflating:\s*([^\s]+)/) {
+                push(@Contents, $1);
             }
         }
+        if(not @Contents) {
+            exitStatus("Error", "can't extract \'$Path\'");
+        }
+        return join_P($UnpackDir, $Contents[0]);
+    }
+    elsif($FileName=~s/\Q.tar.gz\E\Z//g)
+    { # *.tar.gz
+        if($In::Opt{"OS"} eq "windows")
+        { # -xvzf option is not implemented in tar.exe (2003)
+          # use "gzip.exe -k -d -f" + "tar.exe -xvf" instead
+            my $TarCmd = getCmdPath("tar");
+            if(not $TarCmd) {
+                exitStatus("Not_Found", "can't find \"tar\" command");
+            }
+            my $GzipCmd = getCmdPath("gzip");
+            if(not $GzipCmd) {
+                exitStatus("Not_Found", "can't find \"gzip\" command");
+            }
+            chdir($UnpackDir);
+            qx/$GzipCmd -k -d -f "$Path"/; # keep input files (-k)
+            if($?) {
+                exitStatus("Error", "can't extract \'$Path\'");
+            }
+            my @Contents = qx/$TarCmd -xvf "$Dir\\$FileName.tar"/;
+            if($? or not @Contents) {
+                exitStatus("Error", "can't extract \'$Path\'");
+            }
+            chdir($In::Opt{"OrigDir"});
+            unlink($Dir."/".$FileName.".tar");
+            chomp $Contents[0];
+            return join_P($UnpackDir, $Contents[0]);
+        }
+        else
+        { # Linux, Unix, OS X
+            my $TarCmd = getCmdPath("tar");
+            if(not $TarCmd) {
+                exitStatus("Not_Found", "can't find \"tar\" command");
+            }
+            chdir($UnpackDir);
+            my @Contents = qx/$TarCmd -xvzf "$Path" 2>&1/;
+            if($? or not @Contents) {
+                exitStatus("Error", "can't extract \'$Path\'");
+            }
+            chdir($In::Opt{"OrigDir"});
+            $Contents[0]=~s/^x //; # OS X
+            chomp $Contents[0];
+            return join_P($UnpackDir, $Contents[0]);
+        }
     }
 }
 
-sub exitStatus($$)
-{
-    my ($Code, $Msg) = @_;
-    print STDERR "ERROR: ". $Msg."\n";
-    exit($ERROR_CODE{$Code});
-}
-
-sub printMsg($$)
+sub createArchive($$)
 {
-    my ($Type, $Msg) = @_;
-    if($Type!~/\AINFO/) {
-        $Msg = $Type.": ".$Msg;
-    }
-    if($Type!~/_C\Z/) {
-        $Msg .= "\n";
+    my ($Path, $To) = @_;
+    if(not $To) {
+        $To = ".";
     }
-    if($Type eq "ERROR") {
-        print STDERR $Msg;
+    
+    my $TmpDir = $In::Opt{"Tmp"};
+    
+    my ($From, $Name) = sepPath($Path);
+    if($In::Opt{"OS"} eq "windows")
+    { # *.zip
+        my $ZipCmd = getCmdPath("zip");
+        if(not $ZipCmd) {
+            exitStatus("Not_Found", "can't find \"zip\"");
+        }
+        my $Pkg = $To."/".$Name.".zip";
+        unlink($Pkg);
+        chdir($To);
+        system("$ZipCmd -j \"$Name.zip\" \"$Path\" >\"$TmpDir/null\"");
+        if($?)
+        { # cannot allocate memory (or other problems with "zip")
+            unlink($Path);
+            exitStatus("Error", "can't pack the API dump: ".$!);
+        }
+        chdir($In::Opt{"OrigDir"});
+        unlink($Path);
+        return $Pkg;
     }
-    else {
-        print $Msg;
+    else
+    { # *.tar.gz
+        my $TarCmd = getCmdPath("tar");
+        if(not $TarCmd) {
+            exitStatus("Not_Found", "can't find \"tar\"");
+        }
+        my $GzipCmd = getCmdPath("gzip");
+        if(not $GzipCmd) {
+            exitStatus("Not_Found", "can't find \"gzip\"");
+        }
+        my $Pkg = abs_path($To)."/".$Name.".tar.gz";
+        unlink($Pkg);
+        chdir($From);
+        system($TarCmd, "-czf", $Pkg, $Name);
+        if($?)
+        { # cannot allocate memory (or other problems with "tar")
+            unlink($Path);
+            exitStatus("Error", "can't pack the API dump: ".$!);
+        }
+        chdir($In::Opt{"OrigDir"});
+        unlink($Path);
+        return $To."/".$Name.".tar.gz";
     }
 }
 
-sub printStatMsg($)
+sub initAliases($)
 {
-    my $Level = $_[0];
-    printMsg("INFO", "total ".lc($Level)." compatibility problems: ".$RESULT{$Level}{"Problems"}.", warnings: ".$RESULT{$Level}{"Warnings"});
+    my $LVer = $_[0];
+    
+    initAPI($LVer);
+    
+    $MethodInfo{$LVer} = $In::API{$LVer}{"MethodInfo"};
+    $TypeInfo{$LVer} = $In::API{$LVer}{"TypeInfo"};
+    $TName_Tid{$LVer} = $In::API{$LVer}{"TName_Tid"};
+    
+    initAliases_TypeAttr($LVer);
 }
 
-sub printReport()
+sub createAPIFile($$)
 {
-    printMsg("INFO", "creating compatibility report ...");
-    createReport();
-    if($JoinReport or $DoubleReport)
-    {
-        if($RESULT{"Binary"}{"Problems"}
-        or $RESULT{"Source"}{"Problems"})
-        {
-            printMsg("INFO", "binary compatibility: ".(100-$RESULT{"Binary"}{"Affected"})."\%");
-            printMsg("INFO", "source compatibility: ".(100-$RESULT{"Source"}{"Affected"})."\%");
-        }
-        else
-        {
-            printMsg("INFO", "binary compatibility: 100\%");
-            printMsg("INFO", "source compatibility: 100\%");
-        }
-        printStatMsg("Binary");
-        printStatMsg("Source");
+    my ($LVer, $DescPath) = @_;
+    
+    if(not -e $DescPath) {
+        exitStatus("Access_Error", "can't access \'$DescPath\'");
     }
-    elsif($BinaryOnly)
+    
+    detectDefaultPaths("bin", "java");
+    
+    if(isDump($DescPath))
     {
-        if($RESULT{"Binary"}{"Problems"}) {
-            printMsg("INFO", "binary compatibility: ".(100-$RESULT{"Binary"}{"Affected"})."\%");
+        $In::API{$LVer} = readAPIDump($LVer, $DescPath, "Main");
+        initAliases($LVer);
+        
+        if(my $V = $In::Desc{$LVer}{"TargetVersion"}) {
+            $In::Desc{$LVer}{"Version"} = $V;
         }
         else {
-            printMsg("INFO", "binary compatibility: 100\%");
+            $In::Desc{$LVer}{"Version"} = $In::API{$LVer}{"LibraryVersion"};
         }
-        printStatMsg("Binary");
     }
-    elsif($SourceOnly)
+    else
     {
-        if($RESULT{"Source"}{"Problems"}) {
-            printMsg("INFO", "source compatibility: ".(100-$RESULT{"Source"}{"Affected"})."\%");
+        loadModule("APIDump");
+    
+        checkVersionNum($LVer, $DescPath);
+        readDesc(createDesc($DescPath, $LVer), $LVer);
+        
+        initLogging($LVer);
+        
+        createAPIDump($LVer);
+    }
+    
+    if(my $Dep = $In::Desc{$LVer}{"DepDump"}) {
+        mergeAPIs($LVer, readAPIDump($LVer, $Dep, "Dep"));
+    }
+    
+    printMsg("INFO", "Creating library API dump ...");
+    
+    $In::API{$LVer}{"API_DUMP_VERSION"} = $API_DUMP_VERSION;
+    $In::API{$LVer}{"JAPI_COMPLIANCE_CHECKER_VERSION"} = $TOOL_VERSION;
+    
+    foreach ("TName_Tid") {
+        delete($In::API{$LVer}{$_});
+    }
+    
+    my $DumpPath = "api_dumps/".$In::Opt{"TargetLib"}."/".$In::Desc{$LVer}{"Version"}."/API.dump";
+    if($In::Opt{"OutputDumpPath"})
+    { # user defined path
+        $DumpPath = $In::Opt{"OutputDumpPath"};
+    }
+    
+    my $ArExt = $In::Opt{"Ar"};
+    my $Archive = ($DumpPath=~s/\Q.$ArExt\E\Z//g);
+    
+    if($Archive)
+    {
+        my $TarCmd = getCmdPath("tar");
+        if(not $TarCmd) {
+            exitStatus("Not_Found", "can't find \"tar\"");
         }
-        else {
-            printMsg("INFO", "source compatibility: 100\%");
+        my $GzipCmd = getCmdPath("gzip");
+        if(not $GzipCmd) {
+            exitStatus("Not_Found", "can't find \"gzip\"");
         }
-        printStatMsg("Source");
     }
-    if($JoinReport)
-    {
-        printMsg("INFO", "report: ".getReportPath("Join"));
+    
+    my ($DDir, $DName) = sepPath($DumpPath);
+    my $DPath = $In::Opt{"Tmp"}."/".$DName;
+    if(not $Archive) {
+        $DPath = $DumpPath;
     }
-    elsif($DoubleReport)
-    { # default
-        printMsg("INFO", "report (BC): ".getReportPath("Binary"));
-        printMsg("INFO", "report (SC): ".getReportPath("Source"));
+    
+    mkpath($DDir);
+    
+    open(DUMP, ">", $DPath) || die ("can't open file \'$DPath\': $!\n");
+    print DUMP Dumper($In::API{$LVer});
+    close(DUMP);
+    
+    if(not -s $DPath) {
+        exitStatus("Error", "can't create API dump because something is going wrong with the Data::Dumper module");
     }
-    elsif($BinaryOnly)
-    { # --binary
-        printMsg("INFO", "report: ".getReportPath("Binary"));
+    
+    if($Archive) {
+        $DumpPath = createArchive($DPath, $DDir);
     }
-    elsif($SourceOnly)
-    { # --source
-        printMsg("INFO", "report: ".getReportPath("Source"));
+    
+    if($In::Opt{"OutputDumpPath"}) {
+        printMsg("INFO", "Dump path: ".$In::Opt{"OutputDumpPath"});
+    }
+    else {
+        printMsg("INFO", "Dump path: $DumpPath");
     }
+    exit(0);
 }
 
-sub getReportPath($)
+sub compareInit()
 {
-    my $Level = $_[0];
-    my $Dir = "compat_reports/$TargetLibraryName/".$Descriptor{1}{"Version"}."_to_".$Descriptor{2}{"Version"};
-    if($Level eq "Binary")
+    if(not $In::Desc{1}{"Path"}) {
+        exitStatus("Error", "-old option is not specified");
+    }
+    if(not -e $In::Desc{1}{"Path"}) {
+        exitStatus("Access_Error", "can't access \'".$In::Desc{1}{"Path"}."\'");
+    }
+    if(not $In::Desc{2}{"Path"}) {
+        exitStatus("Error", "-new option is not specified");
+    }
+    if(not -e $In::Desc{2}{"Path"}) {
+        exitStatus("Access_Error", "can't access \'".$In::Desc{2}{"Path"}."\'");
+    }
+    
+    if($In::Opt{"Quick"})
     {
-        if($BinaryReportPath)
-        { # --bin-report-path
-            return $BinaryReportPath;
-        }
-        elsif($OutputReportPath)
-        { # --report-path
-            return $OutputReportPath;
-        }
-        else
-        { # default
-            return $Dir."/bin_compat_report.html";
-        }
+        $CompatRules{"Binary"}{"Interface_Added_Super_Interface"}{"Severity"} = "Low";
+        $CompatRules{"Binary"}{"Abstract_Class_Added_Super_Abstract_Class"}{"Severity"} = "Low";
+        $CompatRules{"Binary"}{"Abstract_Class_Added_Super_Interface"}{"Severity"} = "Low";
+        $CompatRules{"Binary"}{"Abstract_Class_Added_Abstract_Method"}{"Severity"} = "Low";
+        $CompatRules{"Binary"}{"Interface_Added_Abstract_Method"}{"Severity"} = "Low";
     }
-    elsif($Level eq "Source")
+    
+    printMsg("INFO", "Preparing, please wait ...");
+    
+    detectDefaultPaths("bin", undef);
+    
+    if(isDump($In::Desc{1}{"Path"}))
     {
-        if($SourceReportPath)
-        { # --src-report-path
-            return $SourceReportPath;
-        }
-        elsif($OutputReportPath)
-        { # --report-path
-            return $OutputReportPath;
+        $In::API{1} = readAPIDump(1, $In::Desc{1}{"Path"}, "Main");
+        initAliases(1);
+        
+        if(my $V = $In::Desc{1}{"TargetVersion"}) {
+            $In::Desc{1}{"Version"} = $V;
         }
-        else
-        { # default
-            return $Dir."/src_compat_report.html";
+        else {
+            $In::Desc{1}{"Version"} = $In::API{1}{"LibraryVersion"};
         }
     }
     else
     {
-        if($OutputReportPath)
-        { # --report-path
-            return $OutputReportPath;
-        }
-        else
-        { # default
-            return $Dir."/compat_report.html";
-        }
-    }
-}
-
-sub initLogging($)
-{
-    my $LibVersion = $_[0];
-    if($Debug)
-    { # debug directory
-        $DEBUG_PATH{$LibVersion} = "debug/$TargetLibraryName/".$Descriptor{$LibVersion}{"Version"};
+        loadModule("APIDump");
         
-        if(-d $DEBUG_PATH{$LibVersion}) {
-            rmtree($DEBUG_PATH{$LibVersion});
-        }
-    }
-}
-
-sub createArchive($$)
-{
-    my ($Path, $To) = @_;
-    if(not $To) {
-        $To = ".";
+        checkVersionNum(1, $In::Desc{1}{"Path"});
+        readDesc(createDesc($In::Desc{1}{"Path"}, 1), 1);
+        
+        initLogging(1);
+        detectDefaultPaths(undef, "java");
+        createAPIDump(1);
     }
-    if(not $Path or not -e $Path
-    or not -d $To) {
-        return "";
+    
+    if(my $Dep = $In::Desc{1}{"DepDump"}) {
+        mergeAPIs(1, readAPIDump(1, $Dep, "Dep"));
     }
-    my ($From, $Name) = separate_path($Path);
-    if($OSgroup eq "windows")
-    { # *.zip
-        my $ZipCmd = get_CmdPath("zip");
-        if(not $ZipCmd) {
-            exitStatus("Not_Found", "can't find \"zip\"");
+    
+    if(isDump($In::Desc{2}{"Path"}))
+    {
+        $In::API{2} = readAPIDump(2, $In::Desc{2}{"Path"}, "Main");
+        initAliases(2);
+        
+        if(my $V = $In::Desc{2}{"TargetVersion"}) {
+            $In::Desc{2}{"Version"} = $V;
         }
-        my $Pkg = $To."/".$Name.".zip";
-        unlink($Pkg);
-        chdir($To);
-        system("$ZipCmd -j \"$Name.zip\" \"$Path\" >\"$TMP_DIR/null\"");
-        if($?)
-        { # cannot allocate memory (or other problems with "zip")
-            unlink($Path);
-            exitStatus("Error", "can't pack the API dump: ".$!);
+        else {
+            $In::Desc{2}{"Version"} = $In::API{2}{"LibraryVersion"};
         }
-        chdir($ORIG_DIR);
-        unlink($Path);
-        return $Pkg;
     }
     else
-    { # *.tar.gz
-        my $TarCmd = get_CmdPath("tar");
-        if(not $TarCmd) {
-            exitStatus("Not_Found", "can't find \"tar\"");
+    {
+        loadModule("APIDump");
+        
+        checkVersionNum(2, $In::Desc{2}{"Path"});
+        readDesc(createDesc($In::Desc{2}{"Path"}, 2), 2);
+        
+        initLogging(2);
+        detectDefaultPaths(undef, "java");
+        createAPIDump(2);
+    }
+    
+    if(my $Dep = $In::Desc{2}{"DepDump"}) {
+        mergeAPIs(2, readAPIDump(2, $Dep, "Dep"));
+    }
+    
+    prepareData(1);
+    prepareData(2);
+    
+    foreach my $Inv (keys(%{$MethodUsed{2}}))
+    {
+        foreach my $M (keys(%{$MethodUsed{2}{$Inv}}))
+        {
+            my $InvType = $MethodUsed{2}{$Inv}{$M};
+            
+            if($InvType ne "static"
+            and index($Inv, "<init>")==-1)
+            {
+                my $CName = $Inv;
+                $CName=~s/\A\"\[L(.+);"/$1/g;
+                $CName=~s/#/./g;
+                
+                if($CName=~/\A(.+?)\./)
+                {
+                    $CName = $1;
+                    if($CName!~/\"/)
+                    {
+                        $CName=~s!/!.!g;
+                        $ClassMethod_AddedUsed{$CName}{$Inv} = $M;
+                    }
+                }
+            }
+            
+            if(not defined $MethodInfo{1}{$M}) {
+                delete($MethodUsed{2}{$Inv}{$M});
+            }
         }
-        my $GzipCmd = get_CmdPath("gzip");
-        if(not $GzipCmd) {
-            exitStatus("Not_Found", "can't find \"gzip\"");
+    }
+    
+    foreach my $ClassName (keys(%ClassMethod_AddedUsed))
+    {
+        foreach my $MethodName (keys(%{$ClassMethod_AddedUsed{$ClassName}}))
+        {
+            if(defined $MethodInfo{1}{$MethodName}
+            or defined $MethodInfo{2}{$MethodName}
+            or defined $MethodUsed{1}{$MethodName}
+            or findMethod($MethodName, 2, $ClassName, 1))
+            { # abstract method added by the new super-class (abstract) or super-interface
+                delete($ClassMethod_AddedUsed{$ClassName}{$MethodName});
+            }
         }
-        my $Pkg = abs_path($To)."/".$Name.".tar.gz";
-        unlink($Pkg);
-        chdir($From);
-        system($TarCmd, "-czf", $Pkg, $Name);
-        if($?)
-        { # cannot allocate memory (or other problems with "tar")
-            unlink($Path);
-            exitStatus("Error", "can't pack the API dump: ".$!);
+        if(not keys(%{$ClassMethod_AddedUsed{$ClassName}})) {
+            delete($ClassMethod_AddedUsed{$ClassName});
         }
-        chdir($ORIG_DIR);
-        unlink($Path);
-        return $To."/".$Name.".tar.gz";
     }
 }
 
-sub getMd5(@)
-{
-    my $Md5 = md5_hex(@_);
-    return substr($Md5, 0, $MD5_LEN);
-}
-
 sub scenario()
 {
-    if($BinaryOnly and $SourceOnly)
+    setTarget("default");
+    
+    initAliases(1);
+    initAliases(2);
+    
+    $In::Opt{"OrigDir"} = cwd();
+    $In::Opt{"Tmp"} = tempdir(CLEANUP=>1);
+    $In::Opt{"Reproducible"} = 1;
+    
+    $In::Opt{"JoinReport"} = 1;
+    $In::Opt{"DoubleReport"} = 0;
+    
+    if($In::Opt{"BinaryOnly"} and $In::Opt{"SourceOnly"})
     { # both --binary and --source
       # is the default mode
-        $DoubleReport = 1;
-        $JoinReport = 0;
-        $BinaryOnly = 0;
-        $SourceOnly = 0;
-        if($OutputReportPath)
+        $In::Opt{"DoubleReport"} = 1;
+        $In::Opt{"JoinReport"} = 0;
+        $In::Opt{"BinaryOnly"} = 0;
+        $In::Opt{"SourceOnly"} = 0;
+        if($In::Opt{"OutputReportPath"})
         { # --report-path
-            $DoubleReport = 0;
-            $JoinReport = 1;
+            $In::Opt{"DoubleReport"} = 0;
+            $In::Opt{"JoinReport"} = 1;
         }
     }
-    elsif($BinaryOnly or $SourceOnly)
+    elsif($In::Opt{"BinaryOnly"} or $In::Opt{"SourceOnly"})
     { # --binary or --source
-        $DoubleReport = 0;
-        $JoinReport = 0;
+        $In::Opt{"DoubleReport"} = 0;
+        $In::Opt{"JoinReport"} = 0;
     }
-    if(defined $Help)
+    if(defined $In::Opt{"Help"})
     {
-        HELP_MESSAGE();
+        helpMsg();
         exit(0);
     }
-    if(defined $ShowVersion)
+    if(defined $In::Opt{"ShowVersion"})
     {
-        printMsg("INFO", "Java API Compliance Checker (JAPICC) $TOOL_VERSION\nCopyright (C) 2016 Andrey Ponomarenko's ABI Laboratory\nLicense: LGPL or GPL <http://www.gnu.org/licenses/>\nThis program is free software: you can redistribute it and/or modify it.\n\nWritten by Andrey Ponomarenko.");
+        printMsg("INFO", "Java API Compliance Checker (JAPICC) $TOOL_VERSION\nCopyright (C) 2017 Andrey Ponomarenko's ABI Laboratory\nLicense: LGPL or GPL <http://www.gnu.org/licenses/>\nThis program is free software: you can redistribute it and/or modify it.\n\nWritten by Andrey Ponomarenko.");
         exit(0);
     }
-    if(defined $DumpVersion)
+    if(defined $In::Opt{"DumpVersion"})
     {
         printMsg("INFO", $TOOL_VERSION);
         exit(0);
     }
     $Data::Dumper::Sortkeys = 1;
     
-    # FIXME: can't pass \&dump_sorting - cause a segfault sometimes
-    if($SortDump)
+    # FIXME: can't pass \&dumpSorting - cause a segfault sometimes
+    if($In::Opt{"SortDump"})
     {
         $Data::Dumper::Useperl = 1;
-        $Data::Dumper::Sortkeys = \&dump_sorting;
+        $Data::Dumper::Sortkeys = \&dumpSorting;
     }
     
-    if(defined $TestSystem)
+    if(defined $In::Opt{"TestTool"})
     {
-        detect_default_paths();
-        testSystem();
+        detectDefaultPaths("bin", "java");
+        loadModule("RegTests");
+        testTool();
         exit(0);
     }
     
-    if(defined $ShortMode)
+    if(defined $In::Opt{"ShortMode"})
     {
-        if(not defined $AffectLimit) {
-            $AffectLimit = 10;
+        if(not defined $In::Opt{"AffectLimit"}) {
+            $In::Opt{"AffectLimit"} = 10;
         }
     }
     
-    if(not $TargetLibraryName and not $CountMethods)
+    if(not $In::Opt{"TargetLib"} and not $In::Opt{"CountMethods"})
     {
-        if($DumpAPI)
+        if($In::Opt{"DumpAPI"})
         {
-            if($DumpAPI=~/\.jar\Z/)
+            if($In::Opt{"DumpAPI"}=~/\.jar\Z/)
             { # short usage
-                my ($Name, $Version) = getPkgVersion(get_filename($DumpAPI));
+                my ($Name, $Version) = getPkgVersion(getFilename($In::Opt{"DumpAPI"}));
                 if($Name and $Version ne "")
                 {
-                    $TargetLibraryName = $Name;
-                    if(not $TargetVersion{1}) {
-                        $TargetVersion{1} = $Version;
+                    $In::Opt{"TargetLib"} = $Name;
+                    if(not $In::Desc{1}{"TargetVersion"}) {
+                        $In::Desc{1}{"TargetVersion"} = $Version;
                     }
                 }
             }
         }
         else
         {
-            if($Descriptor{1}{"Path"}=~/\.jar\Z/ and $Descriptor{2}{"Path"}=~/\.jar\Z/)
+            if($In::Desc{1}{"Path"}=~/\.jar\Z/ and $In::Desc{2}{"Path"}=~/\.jar\Z/)
             { # short usage
-                my ($Name1, $Version1) = getPkgVersion(get_filename($Descriptor{1}{"Path"}));
-                my ($Name2, $Version2) = getPkgVersion(get_filename($Descriptor{2}{"Path"}));
+                my ($Name1, $Version1) = getPkgVersion(getFilename($In::Desc{1}{"Path"}));
+                my ($Name2, $Version2) = getPkgVersion(getFilename($In::Desc{2}{"Path"}));
                 
                 if($Name1 and $Version1 ne ""
                 and $Version2 ne "")
                 {
-                    $TargetLibraryName = $Name1;
-                    if(not $TargetVersion{1}) {
-                        $TargetVersion{1} = $Version1;
+                    $In::Opt{"TargetLib"} = $Name1;
+                    if(not $In::Desc{1}{"TargetVersion"}) {
+                        $In::Desc{1}{"TargetVersion"} = $Version1;
                     }
-                    if(not $TargetVersion{2}) {
-                        $TargetVersion{2} = $Version2;
+                    if(not $In::Desc{2}{"TargetVersion"}) {
+                        $In::Desc{2}{"TargetVersion"} = $Version2;
                     }
                 }
             }
         }
         
-        if(not $TargetLibraryName) {
+        if(not $In::Opt{"TargetLib"}) {
             exitStatus("Error", "library name is not selected (option --lib=NAME)");
         }
     }
     else
     { # validate library name
-        if($TargetLibraryName=~/[\*\/\\]/) {
+        if($In::Opt{"TargetLib"}=~/[\*\/\\]/) {
             exitStatus("Error", "\"\\\", \"\/\" and \"*\" symbols are not allowed in the library name");
         }
     }
-    if(not $TargetTitle) {
-        $TargetTitle = $TargetLibraryName;
+    if(not $In::Opt{"TargetTitle"}) {
+        $In::Opt{"TargetTitle"} = $In::Opt{"TargetLib"};
     }
-    if($ClassListPath)
+    if(my $ClassListPath = $In::Opt{"ClassListPath"})
     {
         if(not -f $ClassListPath) {
             exitStatus("Access_Error", "can't access file \'$ClassListPath\'");
@@ -8779,30 +4713,30 @@ sub scenario()
         foreach my $Class (split(/\n/, readFile($ClassListPath)))
         {
             $Class=~s/\//./g;
-            $ClassList_User{$Class} = 1;
+            $In::Opt{"ClassList_User"}{$Class} = 1;
         }
     }
-    if($AnnotationsListPath)
+    if(my $AnnotationsListPath = $In::Opt{"AnnotationsListPath"})
     {
         if(not -f $AnnotationsListPath) {
             exitStatus("Access_Error", "can't access file \'$AnnotationsListPath\'");
         }
         foreach my $Annotation (split(/\n/, readFile($AnnotationsListPath)))
         {
-            $AnnotationList_User{$Annotation} = 1;
+            $In::Opt{"AnnotationList_User"}{$Annotation} = 1;
         }
     }
-    if($SkipAnnotationsListPath)
+    if(my $SkipAnnotationsListPath = $In::Opt{"SkipAnnotationsListPath"})
     {
         if(not -f $SkipAnnotationsListPath) {
             exitStatus("Access_Error", "can't access file \'$SkipAnnotationsListPath\'");
         }
         foreach my $Annotation (split(/\n/, readFile($SkipAnnotationsListPath)))
         {
-            $SkipAnnotationList_User{$Annotation} = 1;
+            $In::Opt{"SkipAnnotationList_User"}{$Annotation} = 1;
         }
     }
-    if($SkipClassesList)
+    if(my $SkipClassesList = $In::Opt{"SkipClassesList"})
     {
         if(not -f $SkipClassesList) {
             exitStatus("Access_Error", "can't access file \'$SkipClassesList\'");
@@ -8810,21 +4744,21 @@ sub scenario()
         foreach my $Class (split(/\n/, readFile($SkipClassesList)))
         {
             $Class=~s/\//./g;
-            $SkipClasses{$Class} = 1;
+            $In::Opt{"SkipClasses"}{$Class} = 1;
         }
     }
-    if($SkipPackagesList)
+    if(my $SkipPackagesList = $In::Opt{"SkipPackagesList"})
     {
         if(not -f $SkipPackagesList) {
             exitStatus("Access_Error", "can't access file \'$SkipPackagesList\'");
         }
         foreach my $Package (split(/\n/, readFile($SkipPackagesList)))
         {
-            $SkipPackages{1}{$Package} = 1;
-            $SkipPackages{2}{$Package} = 1;
+            $In::Desc{1}{"SkipPackages"}{$Package} = 1;
+            $In::Desc{2}{"SkipPackages"}{$Package} = 1;
         }
     }
-    if($ClientPath)
+    if(my $ClientPath = $In::Opt{"ClientPath"})
     {
         if($ClientPath=~/\.class\Z/) {
             exitStatus("Error", "input file is not a java archive");
@@ -8832,7 +4766,7 @@ sub scenario()
         
         if(-f $ClientPath)
         {
-            detect_default_paths();
+            detectDefaultPaths("bin", undef);
             readArchive(0, $ClientPath)
         }
         else {
@@ -8840,13 +4774,14 @@ sub scenario()
         }
     }
     
-    if($CountMethods)
+    if(my $DPath = $In::Opt{"CountMethods"})
     {
-        if(not -e $CountMethods) {
-            exitStatus("Access_Error", "can't access \'$CountMethods\'");
+        if(not -e $DPath) {
+            exitStatus("Access_Error", "can't access \'$DPath\'");
         }
         
-        read_API_Dump(1, $CountMethods, "Main");
+        $In::API{1} = readAPIDump(1, $DPath, "Main");
+        initAliases(1);
         
         my $Count = 0;
         foreach my $Method (keys(%{$MethodInfo{1}})) {
@@ -8857,238 +4792,31 @@ sub scenario()
         exit(0);
     }
     
-    if($DumpAPI)
+    if($In::Opt{"DumpAPI"})
     {
-        if(not -e $DumpAPI) {
-            exitStatus("Access_Error", "can't access \'$DumpAPI\'");
-        }
-        
-        detect_default_paths();
-        checkVersionNum(1, $DumpAPI);
-        
-        my $TarCmd = get_CmdPath("tar");
-        if(not $TarCmd) {
-            exitStatus("Not_Found", "can't find \"tar\"");
-        }
-        my $GzipCmd = get_CmdPath("gzip");
-        if(not $GzipCmd) {
-            exitStatus("Not_Found", "can't find \"gzip\"");
-        }
-        createDescriptor(1, $DumpAPI);
-        if(not $Descriptor{1}{"Archives"}) {
-            exitStatus("Error", "descriptor does not contain Java ARchives");
-        }
-        
-        initLogging(1);
-        readArchives(1);
-        
-        printMsg("INFO", "creating library API dump ...");
-        if(not keys(%{$MethodInfo{1}})) {
-            printMsg("WARNING", "empty dump");
-        }
-        
-        my $MInfo = {};
-        my $MNum = 0;
-        foreach my $Method (sort keys(%{$MethodInfo{1}}))
-        {
-            my $MId = $MNum;
-            if($REPRODUCIBLE) {
-                $MId = getMd5($Method);
-            }
-            $MInfo->{$MId} = $MethodInfo{1}{$Method};
-            $MInfo->{$MId}{"Name"} = $Method;
-            
-            $MNum+=1;
-        }
-        
-        my $MUsed = {};
-        $MNum = 0;
-        foreach my $Inv (sort keys(%{$MethodUsed{1}}))
-        {
-            my $MId = $MNum;
-            if($REPRODUCIBLE) {
-                $MId = getMd5($Inv);
-            }
-            
-            $MUsed->{$MId}{"Name"} = $Inv;
-            $MUsed->{$MId}{"Used"} = $MethodUsed{1}{$Inv};
-            
-            $MNum+=1;
-        }
-        
-        my %API = (
-            "MethodInfo" => $MInfo,
-            "TypeInfo" => $TypeInfo{1},
-            "MethodUsed" => $MUsed,
-            # "FieldUsed" => $FieldUsed{1},
-            "LibraryVersion" => $Descriptor{1}{"Version"},
-            "LibraryName" => $TargetLibraryName,
-            "Language" => "Java",
-            "API_DUMP_VERSION" => $API_DUMP_VERSION,
-            "JAPI_COMPLIANCE_CHECKER_VERSION" => $TOOL_VERSION
-        );
-        
-        my $DumpPath = "api_dumps/$TargetLibraryName/".$TargetLibraryName."_".$Descriptor{1}{"Version"}.".api.".$AR_EXT;
-        if($OutputDumpPath)
-        { # user defined path
-            $DumpPath = $OutputDumpPath;
-        }
-        
-        my $Archive = ($DumpPath=~s/\Q.$AR_EXT\E\Z//g);
-        
-        my ($DDir, $DName) = separate_path($DumpPath);
-        my $DPath = $TMP_DIR."/".$DName;
-        if(not $Archive) {
-            $DPath = $DumpPath;
-        }
-        
-        mkpath($DDir);
-        
-        open(DUMP, ">", $DPath) || die ("can't open file \'$DPath\': $!\n");
-        print DUMP Dumper(\%API);
-        close(DUMP);
-        
-        if(not -s $DPath) {
-            exitStatus("Error", "can't create API dump because something is going wrong with the Data::Dumper module");
-        }
-        
-        if($Archive) {
-            $DumpPath = createArchive($DPath, $DDir);
-        }
-        
-        if($OutputDumpPath) {
-            printMsg("INFO", "dump path: $OutputDumpPath");
-        }
-        else {
-            printMsg("INFO", "dump path: $DumpPath");
-        }
+        createAPIFile(1, $In::Opt{"DumpAPI"});
         exit(0);
     }
-    if(not $Descriptor{1}{"Path"}) {
-        exitStatus("Error", "-old option is not specified");
-    }
-    if(not -e $Descriptor{1}{"Path"}) {
-        exitStatus("Access_Error", "can't access \'".$Descriptor{1}{"Path"}."\'");
-    }
-    if(not $Descriptor{2}{"Path"}) {
-        exitStatus("Error", "-new option is not specified");
-    }
-    if(not -e $Descriptor{2}{"Path"}) {
-        exitStatus("Access_Error", "can't access \'".$Descriptor{2}{"Path"}."\'");
-    }
-    
-    if($Quick)
-    {
-        $TypeProblems_Kind{"Binary"}{"Interface_Added_Super_Interface"} = "Low";
-        $TypeProblems_Kind{"Binary"}{"Abstract_Class_Added_Super_Abstract_Class"} = "Low";
-        $TypeProblems_Kind{"Binary"}{"Abstract_Class_Added_Super_Interface"} = "Low";
-        $TypeProblems_Kind{"Binary"}{"Abstract_Class_Added_Abstract_Method"} = "Low";
-        $TypeProblems_Kind{"Binary"}{"Interface_Added_Abstract_Method"} = "Low";
-    }
-    
-    detect_default_paths();
-    
-    checkVersionNum(1, $Descriptor{1}{"Path"});
-    checkVersionNum(2, $Descriptor{2}{"Path"});
-    
-    createDescriptor(1, $Descriptor{1}{"Path"});
-    createDescriptor(2, $Descriptor{2}{"Path"});
-    
-    if(not $Descriptor{1}{"Archives"}) {
-        exitStatus("Error", "descriptor d1 does not contain Java ARchives");
-    }
-    if(not $Descriptor{2}{"Archives"}) {
-        exitStatus("Error", "descriptor d2 does not contain Java ARchives");
-    }
-    initLogging(1);
-    initLogging(2);
-    
-    if($Descriptor{1}{"Archives"}
-    and not $Descriptor{1}{"Dump"}) {
-        readArchives(1);
-    }
-    if($Descriptor{2}{"Archives"}
-    and not $Descriptor{2}{"Dump"}) {
-        readArchives(2);
-    }
-    
-    foreach my $Inv (keys(%{$MethodUsed{2}}))
-    {
-        foreach my $M (keys(%{$MethodUsed{2}{$Inv}}))
-        {
-            my $InvType = $MethodUsed{2}{$Inv}{$M};
-            
-            if($InvType ne "static"
-            and index($Inv, "<init>")==-1)
-            {
-                my $CName = $Inv;
-                $CName=~s/\A\"\[L(.+);"/$1/g;
-                $CName=~s/#/./g;
-                
-                if($CName=~/\A(.+?)\./)
-                {
-                    $CName = $1;
-                    if($CName!~/\"/)
-                    {
-                        $CName=~s!/!.!g;
-                        $ClassMethod_AddedUsed{$CName}{$Inv} = $M;
-                    }
-                }
-            }
-            
-            if(not defined $MethodInfo{1}{$M}) {
-                delete($MethodUsed{2}{$Inv}{$M});
-            }
-        }
-    }
     
-    foreach my $ClassName (keys(%ClassMethod_AddedUsed))
-    {
-        foreach my $MethodName (keys(%{$ClassMethod_AddedUsed{$ClassName}}))
-        {
-            if(defined $MethodInfo{1}{$MethodName}
-            or defined $MethodInfo{2}{$MethodName}
-            or defined $MethodUsed{1}{$MethodName}
-            or findMethod($MethodName, 2, $ClassName, 1))
-            { # abstract method added by the new super-class (abstract) or super-interface
-                delete($ClassMethod_AddedUsed{$ClassName}{$MethodName});
-            }
-        }
-        if(not keys(%{$ClassMethod_AddedUsed{$ClassName}})) {
-            delete($ClassMethod_AddedUsed{$ClassName});
-        }
-    }
+    compareInit();
     
-    prepareMethods(1);
-    prepareMethods(2);
+    readRules("Binary");
+    readRules("Source");
     
     detectAdded();
     detectRemoved();
     
-    printMsg("INFO", "comparing classes ...");
+    printMsg("INFO", "Comparing classes ...");
     mergeClasses();
     mergeMethods();
     
-    foreach my $M (keys(%CompatProblems))
-    {
-        foreach my $K (keys(%{$CompatProblems{$M}}))
-        {
-            foreach my $L (keys(%{$CompatProblems{$M}{$K}}))
-            {
-                if(my $T = $CompatProblems{$M}{$K}{$L}{"Type_Name"}) {
-                    $TypeProblemsIndex{$T}{$M} = 1;
-                }
-            }
-        }
-    }
-    
     printReport();
     
     if($RESULT{"Source"}{"Problems"} + $RESULT{"Binary"}{"Problems"}) {
-        exit($ERROR_CODE{"Incompatible"});
+        exit(getErrorCode("Incompatible"));
     }
     else {
-        exit($ERROR_CODE{"Compatible"});
+        exit(getErrorCode("Compatible"));
     }
 }
 
diff --git a/tools/japicc/modules/Internals/APIDump.pm b/tools/japicc/modules/Internals/APIDump.pm
new file mode 100644
index 0000000..e7ecd40
--- /dev/null
+++ b/tools/japicc/modules/Internals/APIDump.pm
@@ -0,0 +1,1043 @@
+###########################################################################
+# A module to create API dump from disassembled code
+#
+# Copyright (C) 2016-2017 Andrey Ponomarenko's ABI Laboratory
+#
+# Written by Andrey Ponomarenko
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License or the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# and the GNU Lesser General Public License along with this program.
+# If not, see <http://www.gnu.org/licenses/>.
+###########################################################################
+use strict;
+use IPC::Open3;
+
+my $ExtractCounter = 0;
+
+my %MName_Mid;
+my %Mid_MName;
+
+my $T_ID = 0;
+my $M_ID = 0;
+my $U_ID = 0;
+
+# Aliases
+my (%MethodInfo, %TypeInfo, %TName_Tid) = ();
+
+foreach (1, 2)
+{
+    $MethodInfo{$_} = $In::API{$_}{"MethodInfo"};
+    $TypeInfo{$_} = $In::API{$_}{"TypeInfo"};
+    $TName_Tid{$_} = $In::API{$_}{"TName_Tid"};
+}
+
+sub createAPIDump($)
+{
+    my $LVer = $_[0];
+    
+    readArchives($LVer);
+    
+    if(not keys(%{$MethodInfo{$LVer}})) {
+        printMsg("WARNING", "empty dump");
+    }
+    
+    $In::API{$LVer}{"LibraryVersion"} = $In::Desc{$LVer}{"Version"};
+    $In::API{$LVer}{"LibraryName"} = $In::Opt{"TargetLib"};
+    $In::API{$LVer}{"Language"} = "Java";
+}
+
+sub readArchives($)
+{
+    my $LVer = $_[0];
+    my @ArchivePaths = getArchives($LVer);
+    if($#ArchivePaths==-1) {
+        exitStatus("Error", "Java archives are not found in ".$In::Desc{$LVer}{"Version"});
+    }
+    printMsg("INFO", "Reading classes ".$In::Desc{$LVer}{"Version"}." ...");
+    
+    $T_ID = 0;
+    $M_ID = 0;
+    $U_ID = 0;
+    
+    %MName_Mid = ();
+    %Mid_MName = ();
+    
+    foreach my $ArchivePath (sort {length($a)<=>length($b)} @ArchivePaths) {
+        readArchive($LVer, $ArchivePath);
+    }
+    foreach my $TName (keys(%{$TName_Tid{$LVer}}))
+    {
+        my $Tid = $TName_Tid{$LVer}{$TName};
+        if(not $TypeInfo{$LVer}{$Tid}{"Type"})
+        {
+            if($TName=~/\A(void|boolean|char|byte|short|int|float|long|double)\Z/) {
+                $TypeInfo{$LVer}{$Tid}{"Type"} = "primitive";
+            }
+            else {
+                $TypeInfo{$LVer}{$Tid}{"Type"} = "class";
+            }
+        }
+    }
+}
+
+sub getArchives($)
+{
+    my $LVer = $_[0];
+    my @Paths = ();
+    foreach my $Path (keys(%{$In::Desc{$LVer}{"Archives"}}))
+    {
+        if(not -e $Path) {
+            exitStatus("Access_Error", "can't access \'$Path\'");
+        }
+        
+        foreach (getArchivePaths($Path, $LVer)) {
+            push(@Paths, $_);
+        }
+    }
+    return @Paths;
+}
+
+sub readArchive($$)
+{ # 1, 2 - library, 0 - client
+    my ($LVer, $Path) = @_;
+    
+    $Path = getAbsPath($Path);
+    my $JarCmd = getCmdPath("jar");
+    if(not $JarCmd) {
+        exitStatus("Not_Found", "can't find \"jar\" command");
+    }
+    my $ExtractPath = join_P($In::Opt{"Tmp"}, $ExtractCounter);
+    if(-d $ExtractPath) {
+        rmtree($ExtractPath);
+    }
+    mkpath($ExtractPath);
+    chdir($ExtractPath);
+    system($JarCmd." -xf \"$Path\"");
+    if($?) {
+        exitStatus("Error", "can't extract \'$Path\'");
+    }
+    chdir($In::Opt{"OrigDir"});
+    my @Classes = ();
+    foreach my $ClassPath (cmdFind($ExtractPath, "", "*\\.class"))
+    {
+        if($In::Opt{"OS"} ne "windows") {
+            $ClassPath=~s/\.class\Z//g;
+        }
+        
+        my $ClassName = getFilename($ClassPath);
+        if($ClassName=~/\$\d/) {
+            next;
+        }
+        $ClassPath = cutPrefix($ClassPath, $ExtractPath); # javap decompiler accepts relative paths only
+        
+        my $ClassDir = getDirname($ClassPath);
+        if($ClassDir=~/\./)
+        { # jaxb-osgi.jar/1.0/org/apache
+            next;
+        }
+        
+        my $Package = getPFormat($ClassDir);
+        if($LVer)
+        {
+            if(skipPackage($Package, $LVer))
+            { # internal packages
+                next;
+            }
+        }
+        
+        push(@Classes, $ClassPath);
+    }
+    
+    if($#Classes!=-1)
+    {
+        foreach my $PartRef (divideArray(\@Classes))
+        {
+            if($LVer) {
+                readClasses($PartRef, $LVer, getFilename($Path));
+            }
+            else {
+                readClasses_Usage($PartRef);
+            }
+        }
+    }
+    
+    $ExtractCounter += 1;
+    
+    if($LVer)
+    {
+        foreach my $SubArchive (cmdFind($ExtractPath, "", "*\\.jar"))
+        { # recursive step
+            readArchive($LVer, $SubArchive);
+        }
+    }
+    
+    rmtree($ExtractPath);
+}
+
+sub sepParams($$$)
+{
+    my ($Params, $Comma, $Sp) = @_;
+    my @Parts = ();
+    my %B = ( "("=>0, "<"=>0, ")"=>0, ">"=>0 );
+    my $Part = 0;
+    foreach my $Pos (0 .. length($Params) - 1)
+    {
+        my $S = substr($Params, $Pos, 1);
+        if(defined $B{$S}) {
+            $B{$S} += 1;
+        }
+        if($S eq "," and
+        $B{"("}==$B{")"} and $B{"<"}==$B{">"})
+        {
+            if($Comma)
+            { # include comma
+                $Parts[$Part] .= $S;
+            }
+            $Part += 1;
+        }
+        else {
+            $Parts[$Part] .= $S;
+        }
+    }
+    if(not $Sp)
+    { # remove spaces
+        foreach (@Parts)
+        {
+            s/\A //g;
+            s/ \Z//g;
+        }
+    }
+    return @Parts;
+}
+
+sub simpleDecl($)
+{
+    my $Line = $_[0];
+    
+    my %B = ( "<"=>0, ">"=>0 );
+    my @Chars = split("", $Line);
+    
+    my $Extends = undef;
+    my ($Pre, $Post) = ("", "");
+    my @Replace = ();
+    
+    foreach my $Pos (0 .. $#Chars)
+    {
+        my $S = $Chars[$Pos];
+        if(defined $B{$S}) {
+            $B{$S} += 1;
+        }
+        
+        if($B{"<"}!=0)
+        {
+            if(defined $Extends)
+            {
+                my $E = 0;
+                
+                if($S eq ",")
+                {
+                    if($B{"<"}-$B{">"}==$Extends) {
+                        $E = 1;
+                    }
+                }
+                elsif($S eq ">")
+                {
+                    if($B{"<"}==$B{">"} or $B{"<"}-$B{">"}+1==$Extends) {
+                        $E = 1;
+                    }
+                }
+                
+                if($E)
+                {
+                    if($Post) {
+                        push(@Replace, $Post);
+                    }
+                    
+                    $Extends = undef;
+                    ($Pre, $Post) = ("", "");
+                }
+            }
+            elsif($B{"<"}!=$B{">"})
+            {
+                if(substr($Pre, -9) eq " extends ")
+                {
+                    $Extends = $B{"<"}-$B{">"};
+                }
+            }
+        }
+        
+        $Pre .= $S;
+        if(defined $Extends) {
+            $Post .= $S;
+        }
+    }
+    
+    my %Tmpl = ();
+    
+    foreach my $R (@Replace)
+    {
+        if($Line=~s/([A-Za-z\d\?]+) extends \Q$R\E/$1/) {
+            $Tmpl{$1} = $R;
+        }
+    }
+    
+    return ($Line, \%Tmpl);
+}
+
+sub readClasses($$$)
+{
+    my ($Paths, $LVer, $ArchiveName) = @_;
+    
+    my $JavapCmd = getCmdPath("javap");
+    if(not $JavapCmd) {
+        exitStatus("Not_Found", "can't find \"javap\" command");
+    }
+    
+    my $TmpDir = $In::Opt{"Tmp"};
+    
+    # ! private info should be processed
+    my @Cmd = ($JavapCmd, "-s", "-private");
+    if(not $In::Opt{"Quick"}) {
+        @Cmd = (@Cmd, "-c", "-verbose");
+    }
+    
+    @Cmd = (@Cmd, @{$Paths});
+    
+    chdir($TmpDir."/".$ExtractCounter);
+    my $Pid = open3(*IN, *OUT, *ERR, @Cmd);
+    close(IN);
+    
+    my (%TypeAttr, $CurrentMethod, $CurrentPackage, $CurrentClass) = ();
+    my ($InParamTable, $InVarTypeTable, $InExceptionTable, $InCode) = (0, 0, 0, 0);
+    
+    my $InAnnotations = undef;
+    my $InAnnotations_Class = undef;
+    my $InAnnotations_Method = undef;
+    my %AnnotationName = ();
+    my %AnnotationNum = (); # support for Java 7
+    
+    my ($ParamPos, $FieldPos) = (0, 0);
+    my ($LINE, $Stay, $Run, $NonEmpty) = (undef, 0, 1, undef);
+    
+    my $DContent = "";
+    my $Debug = (defined $In::Opt{"Debug"});
+    
+    while($Run)
+    {
+        if(not $Stay)
+        {
+            $LINE = <OUT>;
+            
+            if(not defined $NonEmpty and $LINE) {
+                $NonEmpty = 1;
+            }
+            
+            if($Debug) {
+                $DContent .= $LINE;
+            }
+        }
+        
+        if(not $LINE)
+        {
+            $Run = 0;
+            last;
+        }
+        
+        $Stay = 0;
+        
+        if($LINE=~/\A\s*const/) {
+            next;
+        }
+        
+        if(index($LINE, 'Start  Length')!=-1
+        or index($LINE, 'Compiled from')!=-1
+        or index($LINE, 'Last modified')!=-1
+        or index($LINE, 'MD5 checksum')!=-1
+        or index($LINE, 'Classfile /')==0
+        or index($LINE, 'Classfile jar')==0)
+        {
+            next;
+        }
+        
+        if(index($LINE, '=')!=-1)
+        {
+            if(index($LINE, ' stack=')!=-1
+            or index($LINE, 'frame_type =')!=-1
+            or index($LINE, 'offset_delta =')!=-1)
+            {
+                next;
+            }
+        }
+        
+        if(index($LINE, ':')!=-1)
+        {
+            if(index($LINE, ' LineNumberTable:')!=-1
+            or index($LINE, 'SourceFile:')==0
+            or index($LINE, ' StackMapTable:')!=-1
+            or index($LINE, ' Exceptions:')!=-1
+            or index($LINE, 'Constant pool:')!=-1
+            or index($LINE, 'minor version:')!=-1
+            or index($LINE, 'major version:')!=-1
+            or index($LINE, ' AnnotationDefault:')!=-1)
+            {
+                next;
+            }
+        }
+        
+        if(index($LINE, " of ")!=-1
+        or index($LINE, "= [")!=-1) {
+            next;
+        }
+        
+        if($LINE=~/ line \d+:|\[\s*class|\$\d|\._\d/)
+        { # artificial methods and code
+            next;
+        }
+        
+        # $LINE=~s/ \$(\w)/ $1/g;
+        
+        if(index($LINE, '$')!=-1)
+        {
+            if(index($LINE, ' class$')!=-1
+            or index($LINE, '$eq')!=-1
+            or index($LINE, '.$')!=-1
+            or index($LINE, '/$')!=-1
+            or index($LINE, '$$')!=-1
+            or index($LINE, '$(')!=-1
+            or index($LINE, '$:')!=-1
+            or index($LINE, '$.')!=-1
+            or index($LINE, '$;')!=-1) {
+                next;
+            }
+            
+            if($LINE=~/ (\w+\$|)\w+\$\w+[\(:]/) {
+                next;
+            }
+            
+            if(not $InParamTable and not $InVarTypeTable)
+            {
+                if(index($LINE, ' $')!=-1) {
+                    next;
+                }
+            }
+            
+            $LINE=~s/\$([\> ]|\s*\Z)/$1/g;
+        }
+        
+        my $EndBr = ($LINE eq "}\n" or $LINE eq "}\r\n");
+        
+        if($EndBr) {
+            $InAnnotations_Class = 1;
+        }
+        
+        if($EndBr or $LINE eq "\n" or $LINE eq "\r\n")
+        {
+            $CurrentMethod = undef;
+            $InCode = 0;
+            $InAnnotations_Method = 0;
+            $InParamTable = 0;
+            $InVarTypeTable = 0;
+            next;
+        }
+        
+        if(index($LINE, '#')!=-1)
+        {
+            if($LINE=~/\A\s*#(\d+)/)
+            { # Constant pool
+                my $CNum = $1;
+                if($LINE=~/\s+([^ ]+?);/)
+                {
+                    my $AName = $1;
+                    $AName=~s/\AL//;
+                    $AName=~s/\$/./g;
+                    $AName=~s/\//./g;
+                    
+                    $AnnotationName{$CNum} = $AName;
+                    
+                    if(defined $AnnotationNum{$CNum})
+                    { # support for Java 7
+                        if($InAnnotations_Class) {
+                            $TypeAttr{"Annotations"}{registerType($AName, $LVer)} = 1;
+                        }
+                        delete($AnnotationNum{$CNum});
+                    }
+                }
+                
+                next;
+            }
+            
+            if(index($LINE, ": #")!=-1 and index($LINE, "//")!=-1) {
+                next;
+            }
+        }
+        
+        my $TmplP = undef;
+        
+        # Java 7: templates
+        if(index($LINE, "<")!=-1)
+        { # <T extends java.lang.Object>
+          # <KEYIN extends java.lang.Object ...
+            if($LINE=~/<[A-Z\d\?]+ /i) {
+                ($LINE, $TmplP) = simpleDecl($LINE);
+            }
+        }
+        
+        if(index($LINE, ',')!=-1) {
+            $LINE=~s/\s*,\s*/,/g;
+        }
+        
+        if(index($LINE, '$')!=-1) {
+            $LINE=~s/\$/#/g;
+        }
+        
+        if(index($LINE, "LocalVariableTable")!=-1) {
+            $InParamTable += 1;
+        }
+        elsif(index($LINE, "LocalVariableTypeTable")!=-1) {
+            $InVarTypeTable += 1;
+        }
+        elsif(index($LINE, "Exception table")!=-1) {
+            $InExceptionTable = 1;
+        }
+        elsif(index($LINE, " Code:")!=-1)
+        {
+            $InCode += 1;
+            $InAnnotations = undef;
+        }
+        elsif(index($LINE, ':')!=-1
+        and $LINE=~/\A\s*\d+:\s*/)
+        { # read Code
+            if($InCode==1)
+            {
+                if($CurrentMethod)
+                {
+                    if(index($LINE, "invoke")!=-1)
+                    {
+                        if($LINE=~/ invoke(\w+) .* \/\/\s*(Method|InterfaceMethod)\s+(.+?)\s*\Z/)
+                        { # 3:   invokevirtual   #2; //Method "[Lcom/sleepycat/je/Database#DbState;".clone:()Ljava/lang/Object;
+                            my ($InvokeType, $InvokedName) = ($1, $3);
+                            
+                            if($InvokedName!~/\A(\w+:|java\/(lang|util|io)\/)/
+                            and index($InvokedName, '"<init>":')!=0)
+                            {
+                                $InvokedName=~s/#/\$/g;
+                                
+                                my $ID = undef;
+                                if($In::Opt{"Reproducible"}) {
+                                    $ID = getMd5($InvokedName);
+                                }
+                                else {
+                                    $ID = ++$U_ID;
+                                }
+                                
+                                $In::API{$LVer}{"MethodUsed"}{$ID}{"Name"} = $InvokedName;
+                                $In::API{$LVer}{"MethodUsed"}{$ID}{"Used"}{$CurrentMethod} = $InvokeType;
+                            }
+                        }
+                    }
+                    # elsif($LINE=~/ (getstatic|putstatic) .* \/\/\s*Field\s+(.+?)\s*\Z/)
+                    # {
+                    #     my $UsedFieldName = $2;
+                    #     $In::API{$LVer}{"FieldUsed"}{$UsedFieldName}{$CurrentMethod} = 1;
+                    # }
+                }
+            }
+            elsif(defined $InAnnotations)
+            {
+                if($LINE=~/\A\s*\d+\:\s*#(\d+)/)
+                {
+                    if(my $AName = $AnnotationName{$1})
+                    {
+                        if($InAnnotations_Class) {
+                            $TypeAttr{"Annotations"}{registerType($AName, $LVer)} = 1;
+                        }
+                        elsif($InAnnotations_Method) {
+                            $MethodInfo{$LVer}{$MName_Mid{$CurrentMethod}}{"Annotations"}{registerType($AName, $LVer)} = 1;
+                        }
+                    }
+                    else
+                    { # suport for Java 7
+                        $AnnotationNum{$1} = 1;
+                    }
+                }
+            }
+        }
+        elsif($InParamTable==1 and $LINE=~/\A\s+\d/)
+        { # read parameter names from LocalVariableTable
+            if($CurrentMethod and $LINE=~/\A\s+0\s+\d+\s+\d+\s+(\#?)(\w+)/)
+            {
+                my $Art = $1;
+                my $PName = $2;
+                
+                if(($PName ne "this" or $Art) and $PName=~/[a-z]/i)
+                {
+                    if($CurrentMethod)
+                    {
+                        my $ID = $MName_Mid{$CurrentMethod};
+                        
+                        if(defined $MethodInfo{$LVer}{$ID}
+                        and defined $MethodInfo{$LVer}{$ID}{"Param"}
+                        and defined $MethodInfo{$LVer}{$ID}{"Param"}{$ParamPos}
+                        and defined $MethodInfo{$LVer}{$ID}{"Param"}{$ParamPos}{"Type"})
+                        {
+                            $MethodInfo{$LVer}{$ID}{"Param"}{$ParamPos}{"Name"} = $PName;
+                            $ParamPos++;
+                        }
+                    }
+                }
+            }
+        }
+        elsif($InVarTypeTable==1 and $LINE=~/\A\s+\d/)
+        {
+            # skip
+        }
+        elsif($CurrentClass and index($LINE, '(')!=-1
+        and $LINE=~/(\A|\s+)([^\s]+)\s+([^\s]+)\s*\((.*)\)\s*(throws\s*([^\s]+)|)\s*;\s*\Z/)
+        { # attributes of methods and constructors
+            my (%MethodAttr, $ParamsLine, $Exceptions) = ();
+            
+            $InParamTable = 0; # read the first local variable table
+            $InVarTypeTable = 0;
+            $InCode = 0; # read the first code
+            $InAnnotations_Method = 1;
+            $InAnnotations_Class = 0;
+            
+            ($MethodAttr{"Return"}, $MethodAttr{"ShortName"}, $ParamsLine, $Exceptions) = ($2, $3, $4, $6);
+            $MethodAttr{"ShortName"}=~s/#/./g;
+            
+            if($Exceptions)
+            {
+                foreach my $E (split(/,/, $Exceptions)) {
+                    $MethodAttr{"Exceptions"}{registerType($E, $LVer)} = 1;
+                }
+            }
+            if($LINE=~/(\A|\s+)(public|protected|private)\s+/) {
+                $MethodAttr{"Access"} = $2;
+            }
+            else {
+                $MethodAttr{"Access"} = "package-private";
+            }
+            $MethodAttr{"Class"} = registerType($TypeAttr{"Name"}, $LVer);
+            if($MethodAttr{"ShortName"}=~/\A(|(.+)\.)\Q$CurrentClass\E\Z/)
+            {
+                if($2)
+                {
+                    $MethodAttr{"Package"} = $2;
+                    $CurrentPackage = $MethodAttr{"Package"};
+                    $MethodAttr{"ShortName"} = $CurrentClass;
+                }
+                $MethodAttr{"Constructor"} = 1;
+                delete($MethodAttr{"Return"});
+            }
+            else
+            {
+                $MethodAttr{"Return"} = registerType($MethodAttr{"Return"}, $LVer);
+            }
+            
+            my @Params = sepParams($ParamsLine, 0, 1);
+            
+            $ParamPos = 0;
+            foreach my $ParamTName (@Params)
+            {
+                %{$MethodAttr{"Param"}{$ParamPos}} = ("Type"=>registerType($ParamTName, $LVer), "Name"=>"p".($ParamPos+1));
+                $ParamPos++;
+            }
+            $ParamPos = 0;
+            if(not $MethodAttr{"Constructor"})
+            { # methods
+                if($CurrentPackage) {
+                    $MethodAttr{"Package"} = $CurrentPackage;
+                }
+                if($LINE=~/(\A|\s+)abstract\s+/) {
+                    $MethodAttr{"Abstract"} = 1;
+                }
+                if($LINE=~/(\A|\s+)final\s+/) {
+                    $MethodAttr{"Final"} = 1;
+                }
+                if($LINE=~/(\A|\s+)static\s+/) {
+                    $MethodAttr{"Static"} = 1;
+                }
+                if($LINE=~/(\A|\s+)native\s+/) {
+                    $MethodAttr{"Native"} = 1;
+                }
+                if($LINE=~/(\A|\s+)synchronized\s+/) {
+                    $MethodAttr{"Synchronized"} = 1;
+                }
+            }
+            
+            my $LINE_N = <OUT>;
+            
+            if($Debug) {
+                $DContent .= $LINE_N;
+            }
+            
+            # $LINE_N=~s/ \$(\w)/ $1/g;
+            $LINE_N=~s/\$([\> ]|\s*\Z)/$1/g;
+            
+            # read the Signature
+            if(index($LINE_N, ": #")==-1
+            and $LINE_N=~/(Signature|descriptor):\s*(.+?)\s*\Z/i)
+            { # create run-time unique name ( java/io/PrintStream.println (Ljava/lang/String;)V )
+                if($MethodAttr{"Constructor"}) {
+                    $CurrentMethod = $CurrentClass.".\"<init>\":".$2;
+                }
+                else {
+                    $CurrentMethod = $CurrentClass.".".$MethodAttr{"ShortName"}.":".$2;
+                }
+                if(my $PackageName = getSFormat($CurrentPackage)) {
+                    $CurrentMethod = $PackageName."/".$CurrentMethod;
+                }
+            }
+            else {
+                exitStatus("Error", "internal error - can't read method signature");
+            }
+            
+            $MethodAttr{"Archive"} = $ArchiveName;
+            if($CurrentMethod)
+            {
+                my $ID = undef;
+                if($In::Opt{"Reproducible"}) {
+                    $ID = getMd5($CurrentMethod);
+                }
+                else {
+                    $ID = ++$M_ID;
+                }
+                
+                $MName_Mid{$CurrentMethod} = $ID;
+                
+                if(defined $Mid_MName{$ID} and $Mid_MName{$ID} ne $CurrentMethod) {
+                    printMsg("ERROR", "md5 collision on \'$ID\', please increase ID length (MD5_LEN in Basic.pm)");
+                }
+                
+                $Mid_MName{$ID} = $CurrentMethod;
+                
+                $MethodAttr{"Name"} = $CurrentMethod;
+                $MethodInfo{$LVer}{$ID} = \%MethodAttr;
+            }
+        }
+        elsif($CurrentClass and $LINE=~/(\A|\s+)([^\s]+)\s+(\w+);\s*\Z/)
+        { # fields
+            my ($TName, $FName) = ($2, $3);
+            $TypeAttr{"Fields"}{$FName}{"Type"} = registerType($TName, $LVer);
+            if($LINE=~/(\A|\s+)final\s+/) {
+                $TypeAttr{"Fields"}{$FName}{"Final"} = 1;
+            }
+            if($LINE=~/(\A|\s+)static\s+/) {
+                $TypeAttr{"Fields"}{$FName}{"Static"} = 1;
+            }
+            if($LINE=~/(\A|\s+)transient\s+/) {
+                $TypeAttr{"Fields"}{$FName}{"Transient"} = 1;
+            }
+            if($LINE=~/(\A|\s+)volatile\s+/) {
+                $TypeAttr{"Fields"}{$FName}{"Volatile"} = 1;
+            }
+            if($LINE=~/(\A|\s+)(public|protected|private)\s+/) {
+                $TypeAttr{"Fields"}{$FName}{"Access"} = $2;
+            }
+            else {
+                $TypeAttr{"Fields"}{$FName}{"Access"} = "package-private";
+            }
+            
+            $TypeAttr{"Fields"}{$FName}{"Pos"} = $FieldPos++;
+            
+            my $LINE_NP = <OUT>;
+            if($Debug) {
+                $DContent .= $LINE_NP;
+            }
+            
+            # read the Signature
+            if(index($LINE_NP, ": #")==-1
+            and $LINE_NP=~/(Signature|descriptor):\s*(.+?)\s*\Z/i)
+            {
+                my $FSignature = $2;
+                if(my $PackageName = getSFormat($CurrentPackage)) {
+                    $TypeAttr{"Fields"}{$FName}{"Mangled"} = $PackageName."/".$CurrentClass.".".$FName.":".$FSignature;
+                }
+            }
+            
+            $LINE_NP = <OUT>;
+            if($Debug) {
+                $DContent .= $LINE_NP;
+            }
+            
+            if($LINE_NP=~/flags:/i)
+            { # flags: ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ANNOTATION
+                $LINE_NP = <OUT>;
+                if($Debug) {
+                    $DContent .= $LINE_NP;
+                }
+            }
+            else
+            {
+                $LINE = $LINE_NP;
+                $Stay = 1;
+            }
+            
+            # read the Value
+            if($LINE_NP=~/Constant\s*value:\s*([^\s]+)\s(.*?)\s*\Z/i)
+            {
+              # Java 6: Constant value: ...
+              # Java 7: ConstantValue: ...
+                my ($TName, $Value) = ($1, $2);
+                if($Value)
+                {
+                    if($Value=~s/Deprecated:\s*true\Z//g) {
+                        # deprecated values: ?
+                    }
+                    $TypeAttr{"Fields"}{$FName}{"Value"} = $Value;
+                }
+                elsif($TName eq "String") {
+                    $TypeAttr{"Fields"}{$FName}{"Value"} = "\@EMPTY_STRING\@";
+                }
+            }
+            else
+            {
+                $LINE = $LINE_NP;
+                $Stay = 1;
+            }
+        }
+        elsif($LINE=~/(\A|\s+)(class|interface)\s+([^\s\{]+)(\s+|\{|\s*\Z)/)
+        { # properties of classes and interfaces
+            if($TypeAttr{"Name"})
+            { # register previous
+                %{$TypeInfo{$LVer}{registerType($TypeAttr{"Name"}, $LVer)}} = %TypeAttr;
+            }
+            
+            %TypeAttr = ("Type"=>$2, "Name"=>$3); # reset previous class
+            %AnnotationName = (); # reset annotations of the class
+            %AnnotationNum = (); # support for Java 7
+            $InAnnotations_Class = 1;
+            
+            $FieldPos = 0; # reset field position
+            $CurrentMethod = ""; # reset current method
+            $TypeAttr{"Archive"} = $ArchiveName;
+            if($TypeAttr{"Name"}=~/\A(.+)\.([^.]+)\Z/)
+            {
+                $CurrentClass = $2;
+                $TypeAttr{"Package"} = $1;
+                $CurrentPackage = $TypeAttr{"Package"};
+            }
+            else
+            {
+                $CurrentClass = $TypeAttr{"Name"};
+                $CurrentPackage = "";
+            }
+            if($CurrentClass=~s/#/./g)
+            { # javax.swing.text.GlyphView.GlyphPainter <=> GlyphView$GlyphPainter
+                $TypeAttr{"Name"}=~s/#/./g;
+            }
+            if($LINE=~/(\A|\s+)(public|protected|private)\s+/) {
+                $TypeAttr{"Access"} = $2;
+            }
+            else {
+                $TypeAttr{"Access"} = "package-private";
+            }
+            if($LINE=~/\s+extends\s+([^\s\{]+)/)
+            {
+                my $Extended = $1;
+                
+                if($TypeAttr{"Type"} eq "class")
+                {
+                    if($Extended ne $CurrentPackage.".".$CurrentClass) {
+                        $TypeAttr{"SuperClass"} = registerType($Extended, $LVer);
+                    }
+                }
+                elsif($TypeAttr{"Type"} eq "interface")
+                {
+                    my @Elems = sepParams($Extended, 0, 0);
+                    foreach my $SuperInterface (@Elems)
+                    {
+                        if($SuperInterface ne $CurrentPackage.".".$CurrentClass) {
+                            $TypeAttr{"SuperInterface"}{registerType($SuperInterface, $LVer)} = 1;
+                        }
+                        
+                        if($SuperInterface eq "java.lang.annotation.Annotation") {
+                            $TypeAttr{"Annotation"} = 1;
+                        }
+                    }
+                }
+            }
+            if($LINE=~/\s+implements\s+([^\s\{]+)/)
+            {
+                my $Implemented = $1;
+                my @Elems = sepParams($Implemented, 0, 0);
+                
+                foreach my $SuperInterface (@Elems) {
+                    $TypeAttr{"SuperInterface"}{registerType($SuperInterface, $LVer)} = 1;
+                }
+            }
+            if($LINE=~/(\A|\s+)abstract\s+/) {
+                $TypeAttr{"Abstract"} = 1;
+            }
+            if($LINE=~/(\A|\s+)final\s+/) {
+                $TypeAttr{"Final"} = 1;
+            }
+            if($LINE=~/(\A|\s+)static\s+/) {
+                $TypeAttr{"Static"} = 1;
+            }
+        }
+        elsif(index($LINE, "Deprecated: true")!=-1
+        or index($LINE, "Deprecated: length")!=-1)
+        { # deprecated method or class
+            if($CurrentMethod) {
+                $MethodInfo{$LVer}{$MName_Mid{$CurrentMethod}}{"Deprecated"} = 1;
+            }
+            elsif($CurrentClass) {
+                $TypeAttr{"Deprecated"} = 1;
+            }
+        }
+        elsif(index($LINE, "RuntimeInvisibleAnnotations")!=-1
+        or index($LINE, "RuntimeVisibleAnnotations")!=-1)
+        {
+            $InAnnotations = 1;
+            $InCode = 0;
+        }
+        elsif(defined $InAnnotations and index($LINE, "InnerClasses")!=-1) {
+            $InAnnotations = undef;
+        }
+        else
+        {
+            # unparsed
+        }
+    }
+    
+    if($TypeAttr{"Name"})
+    { # register last
+        %{$TypeInfo{$LVer}{registerType($TypeAttr{"Name"}, $LVer)}} = %TypeAttr;
+    }
+    
+    waitpid($Pid, 0);
+    chdir($In::Opt{"OrigDir"});
+    
+    if(not $NonEmpty) {
+        exitStatus("Error", "internal error in parser");
+    }
+    
+    if($Debug) {
+        appendFile(getDebugDir($LVer)."/class-dump.txt", $DContent);
+    }
+}
+
+sub registerType($$)
+{
+    my ($TName, $LVer) = @_;
+    
+    if(not $TName) {
+        return 0;
+    }
+    
+    $TName=~s/#/./g;
+    if($TName_Tid{$LVer}{$TName}) {
+        return $TName_Tid{$LVer}{$TName};
+    }
+    
+    if(not $TName_Tid{$LVer}{$TName})
+    {
+        my $ID = undef;
+        if($In::Opt{"Reproducible"}) {
+            $ID = getMd5($TName);
+        }
+        else {
+            $ID = ++$T_ID;
+        }
+        $TName_Tid{$LVer}{$TName} = "$ID";
+    }
+    
+    my $Tid = $TName_Tid{$LVer}{$TName};
+    $TypeInfo{$LVer}{$Tid}{"Name"} = $TName;
+    if($TName=~/(.+)\[\]\Z/)
+    {
+        if(my $BaseTypeId = registerType($1, $LVer))
+        {
+            $TypeInfo{$LVer}{$Tid}{"BaseType"} = $BaseTypeId;
+            $TypeInfo{$LVer}{$Tid}{"Type"} = "array";
+        }
+    }
+    
+    return $Tid;
+}
+
+sub readClasses_Usage($)
+{
+    my $Paths = $_[0];
+    
+    my $JavapCmd = getCmdPath("javap");
+    if(not $JavapCmd) {
+        exitStatus("Not_Found", "can't find \"javap\" command");
+    }
+    
+    my $Input = join(" ", @{$Paths});
+    if($In::Opt{"OS"} ne "windows")
+    { # on unix ensure that the system does not try and interpret the $, by escaping it
+        $Input=~s/\$/\\\$/g;
+    }
+    
+    my $TmpDir = $In::Opt{"Tmp"};
+    
+    chdir($TmpDir."/".$ExtractCounter);
+    open(CONTENT, "$JavapCmd -c -private $Input 2>\"$TmpDir/warn\" |");
+    while(<CONTENT>)
+    {
+        if(/\/\/\s*(Method|InterfaceMethod)\s+(.+)\s*\Z/)
+        {
+            my $M = $2;
+            $In::Opt{"UsedMethods_Client"}{$M} = 1;
+            
+            if($M=~/\A(.*)+\.\w+\:\(/)
+            {
+                my $C = $1;
+                $C=~s/\//./g;
+                $In::Opt{"UsedClasses_Client"}{$C} = 1;
+            }
+        }
+        elsif(/\/\/\s*Field\s+(.+)\s*\Z/)
+        {
+            # my $FieldName = $1;
+            # if(/\s+(putfield|getfield|getstatic|putstatic)\s+/) {
+            #     $UsedFields_Client{$FieldName} = $1;
+            # }
+        }
+        elsif(/ ([^\s]+) [^: ]+\(([^()]+)\)/)
+        {
+            my ($Ret, $Params) = ($1, $2);
+            
+            $Ret=~s/\[\]//g; # quals
+            $In::Opt{"UsedClasses_Client"}{$Ret} = 1;
+            
+            foreach my $Param (split(/\s*,\s*/, $Params))
+            {
+                $Param=~s/\[\]//g; # quals
+                $In::Opt{"UsedClasses_Client"}{$Param} = 1;
+            }
+        }
+        elsif(/ class /)
+        {
+            if(/extends ([^\s{]+)/)
+            {
+                foreach my $Class (split(/\s*,\s*/, $1)) {
+                    $In::Opt{"UsedClasses_Client"}{$Class} = 1;
+                }
+            }
+            
+            if(/implements ([^\s{]+)/)
+            {
+                foreach my $Interface (split(/\s*,\s*/, $1)) {
+                    $In::Opt{"UsedClasses_Client"}{$Interface} = 1;
+                }
+            }
+        }
+    }
+    close(CONTENT);
+    chdir($In::Opt{"OrigDir"});
+}
+
+return 1;
diff --git a/tools/japicc/modules/Internals/Basic.pm b/tools/japicc/modules/Internals/Basic.pm
new file mode 100644
index 0000000..e5ea1c0
--- /dev/null
+++ b/tools/japicc/modules/Internals/Basic.pm
@@ -0,0 +1,282 @@
+###########################################################################
+# A module with simple functions
+#
+# Copyright (C) 2016-2017 Andrey Ponomarenko's ABI Laboratory
+#
+# Written by Andrey Ponomarenko
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License or the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# and the GNU Lesser General Public License along with this program.
+# If not, see <http://www.gnu.org/licenses/>.
+###########################################################################
+use strict;
+use Digest::MD5 qw(md5_hex);
+use File::Spec::Functions qw(abs2rel);
+use Config;
+
+my %Cache;
+
+my $MD5_LEN = 8;
+
+sub getOSgroup()
+{
+    my $N = $Config{"osname"};
+    my $G = undef;
+    
+    if($N=~/macos|darwin|rhapsody/i) {
+        $G = "macos";
+    }
+    elsif($N=~/freebsd|openbsd|netbsd/i) {
+        $G = "bsd";
+    }
+    elsif($N=~/haiku|beos/i) {
+        $G = "beos";
+    }
+    elsif($N=~/symbian|epoc/i) {
+        $G = "symbian";
+    }
+    elsif($N=~/win/i) {
+        $G = "windows";
+    }
+    elsif($N=~/solaris/i) {
+        $G = "solaris";
+    }
+    else
+    { # linux, unix-like
+        $G = "linux";
+    }
+    
+    return $G;
+}
+
+sub getArExt($)
+{
+    my $Target = $_[0];
+    if($Target eq "windows") {
+        return "zip";
+    }
+    return "tar.gz";
+}
+
+sub getMd5(@)
+{
+    my $Md5 = md5_hex(@_);
+    return substr($Md5, 0, $MD5_LEN);
+}
+
+sub writeFile($$)
+{
+    my ($Path, $Content) = @_;
+    
+    if(my $Dir = getDirname($Path)) {
+        mkpath($Dir);
+    }
+    open (FILE, ">".$Path) || die ("can't open file \'$Path\': $!\n");
+    print FILE $Content;
+    close(FILE);
+}
+
+sub readFile($)
+{
+    my $Path = $_[0];
+    
+    open (FILE, $Path);
+    my $Content = join("", <FILE>);
+    close(FILE);
+    
+    $Content=~s/\r//g;
+    
+    return $Content;
+}
+
+sub appendFile($$)
+{
+    my ($Path, $Content) = @_;
+    
+    if(my $Dir = getDirname($Path)) {
+        mkpath($Dir);
+    }
+    open(FILE, ">>".$Path) || die ("can't open file \'$Path\': $!\n");
+    print FILE $Content;
+    close(FILE);
+}
+
+sub readLineNum($$)
+{
+    my ($Path, $Num) = @_;
+    
+    open (FILE, $Path);
+    foreach (1 ... $Num) {
+        <FILE>;
+    }
+    my $Line = <FILE>;
+    close(FILE);
+    
+    return $Line;
+}
+
+sub readAttributes($$)
+{
+    my ($Path, $Num) = @_;
+    
+    my %Attributes = ();
+    if(readLineNum($Path, $Num)=~/<!--\s+(.+)\s+-->/)
+    {
+        foreach my $AttrVal (split(/;/, $1))
+        {
+            if($AttrVal=~/(.+):(.+)/)
+            {
+                my ($Name, $Value) = ($1, $2);
+                $Attributes{$Name} = $Value;
+            }
+        }
+    }
+    return \%Attributes;
+}
+
+sub getFilename($)
+{ # much faster than basename() from File::Basename module
+    if(defined $Cache{"getFilename"}{$_[0]}) {
+        return $Cache{"getFilename"}{$_[0]};
+    }
+    if($_[0] and $_[0]=~/([^\/\\]+)[\/\\]*\Z/) {
+        return ($Cache{"getFilename"}{$_[0]}=$1);
+    }
+    return ($Cache{"getFilename"}{$_[0]}="");
+}
+
+sub getDirname($)
+{ # much faster than dirname() from File::Basename module
+    if(defined $Cache{"getDirname"}{$_[0]}) {
+        return $Cache{"getDirname"}{$_[0]};
+    }
+    if($_[0] and $_[0]=~/\A(.*?)[\/\\]+[^\/\\]*[\/\\]*\Z/) {
+        return ($Cache{"getDirname"}{$_[0]}=$1);
+    }
+    return ($Cache{"getDirname"}{$_[0]}="");
+}
+
+sub sepPath($) {
+    return (getDirname($_[0]), getFilename($_[0]));
+}
+
+sub checkCmd($)
+{
+    my $Cmd = $_[0];
+
+    foreach my $Path (sort {length($a)<=>length($b)} split(/:/, $ENV{"PATH"}))
+    {
+        if(-x $Path."/".$Cmd) {
+            return 1;
+        }
+    }
+    
+    return 0;
+}
+
+sub isAbsPath($) {
+    return ($_[0]=~/\A(\/|\w+:[\/\\])/);
+}
+
+sub cutPrefix($$)
+{
+    my ($Path, $Prefix) = @_;
+    $Prefix=~s/[\/\\]+\Z//;
+    $Path=~s/\A\Q$Prefix\E([\/\\]+|\Z)//;
+    return $Path;
+}
+
+sub showPos($)
+{
+    my $N = $_[0];
+    if(not $N) {
+        $N = 1;
+    }
+    else {
+        $N = int($N)+1;
+    }
+    if($N>3) {
+        return $N."th";
+    }
+    elsif($N==1) {
+        return "1st";
+    }
+    elsif($N==2) {
+        return "2nd";
+    }
+    elsif($N==3) {
+        return "3rd";
+    }
+    
+    return $N;
+}
+
+sub parseTag($$)
+{
+    my ($CodeRef, $Tag) = @_;
+    
+    if(${$CodeRef}=~s/\<\Q$Tag\E\>((.|\n)+?)\<\/\Q$Tag\E\>//)
+    {
+        my $Content = $1;
+        $Content=~s/(\A\s+|\s+\Z)//g;
+        return $Content;
+    }
+    
+    return "";
+}
+
+sub isDump($)
+{
+    if($_[0]=~/\A(.+)\.(api|dump|apidump)(\Q.tar.gz\E|\Q.zip\E|)\Z/) {
+        return $1;
+    }
+    return 0;
+}
+
+sub isDump_U($)
+{
+    if($_[0]=~/\.(api|dump|apidump)\Z/) {
+        return 1;
+    }
+    return 0;
+}
+
+sub cmpVersions($$)
+{ # compare two version strings in dotted-numeric format
+    my ($V1, $V2) = @_;
+    return 0 if($V1 eq $V2);
+    my @V1Parts = split(/\./, $V1);
+    my @V2Parts = split(/\./, $V2);
+    for (my $i = 0; $i <= $#V1Parts && $i <= $#V2Parts; $i++)
+    {
+        return -1 if(int($V1Parts[$i]) < int($V2Parts[$i]));
+        return 1 if(int($V1Parts[$i]) > int($V2Parts[$i]));
+    }
+    return -1 if($#V1Parts < $#V2Parts);
+    return 1 if($#V1Parts > $#V2Parts);
+    return 0;
+}
+
+sub getRelPath($$)
+{
+    my ($A, $B) = @_;
+    return abs2rel($A, getDirname($B));
+}
+
+sub getPFormat($)
+{
+    my $Name = $_[0];
+    $Name=~s/\//./g;
+    return $Name;
+}
+
+return 1;
diff --git a/tools/japicc/modules/Internals/Css/Report.css b/tools/japicc/modules/Internals/Css/Report.css
new file mode 100644
index 0000000..615df20
--- /dev/null
+++ b/tools/japicc/modules/Internals/Css/Report.css
@@ -0,0 +1,227 @@
+body {
+    font-family:Arial, sans-serif;
+    background-color:White;
+    color:Black;
+}
+hr {
+    color:Black;
+    background-color:Black;
+    height:1px;
+    border:0;
+}
+h1 {
+    margin-bottom:0px;
+    padding-bottom:0px;
+    font-size:1.625em;
+}
+h2 {
+    margin-bottom:0px;
+    padding-bottom:0px;
+    font-size:1.25em;
+    white-space:nowrap;
+}
+div.symbols {
+    color:#003E69;
+}
+div.symbols i {
+    color:Brown;
+}
+span.section {
+    font-weight:bold;
+    cursor:pointer;
+    color:#003E69;
+    white-space:nowrap;
+    margin-left:0.3125em;
+}
+span:hover.section {
+    color:#336699;
+}
+span.sect_aff {
+    cursor:pointer;
+    padding-left:1.55em;
+    font-size:0.875em;
+    color:#cc3300;
+}
+span.ext {
+    font-weight:100;
+}
+span.jar {
+    color:#cc3300;
+    font-size:0.875em;
+    font-weight:bold;
+}
+div.jar_list {
+    padding-left:0.4em;
+    font-size:0.94em;
+}
+span.pkg_t {
+    color:#408080;
+    font-size:0.875em;
+}
+span.pkg {
+    color:#408080;
+    font-size:0.875em;
+    font-weight:bold;
+}
+span.cname {
+    color:Green;
+    font-size:0.875em;
+    font-weight:bold;
+}
+span.iname_b {
+    font-weight:bold;
+}
+span.iname_a {
+    color:#333333;
+    font-weight:bold;
+    font-size:0.94em;
+}
+span.sym_p {
+    font-weight:normal;
+    white-space:normal;
+}
+span.sym_pd {
+    white-space:normal;
+}
+span.sym_p span, span.sym_pd span {
+    white-space:nowrap;
+}
+span.attr {
+    color:Black;
+    font-weight:100;
+}
+span.deprecated {
+    color:Red;
+    font-weight:bold;
+    font-family:Monaco, monospace;
+}
+div.affect {
+    padding-left:1em;
+    padding-bottom:10px;
+    font-size:0.87em;
+    font-style:italic;
+    line-height:0.9em;
+}
+div.affected {
+    padding-left:2em;
+    padding-top:10px;
+}
+table.ptable {
+    border-collapse:collapse;
+    border:1px outset black;
+    margin-left:0.95em;
+    margin-top:3px;
+    margin-bottom:3px;
+    width:56.25em;
+}
+table.ptable td {
+    border:1px solid Gray;
+    padding:3px;
+    font-size:0.875em;
+    text-align:left;
+    vertical-align:top;
+    max-width:28em;
+    word-wrap:break-word;
+}
+table.ptable th {
+    background-color:#eeeeee;
+    font-weight:bold;
+    color:#333333;
+    font-family:Verdana, Arial;
+    font-size:0.875em;
+    border:1px solid Gray;
+    text-align:center;
+    vertical-align:top;
+    white-space:nowrap;
+    padding:3px;
+}
+table.summary {
+    border-collapse:collapse;
+    border:1px outset black;
+}
+table.summary th {
+    background-color:#eeeeee;
+    font-weight:100;
+    text-align:left;
+    font-size:0.94em;
+    white-space:nowrap;
+    border:1px inset Gray;
+    padding:3px;
+}
+table.summary td {
+    text-align:right;
+    white-space:nowrap;
+    border:1px inset Gray;
+    padding:3px 5px 3px 10px;
+}
+span.mngl {
+    padding-left:1em;
+    font-size:0.875em;
+    cursor:text;
+    color:#444444;
+    font-weight:bold;
+}
+span.pleft {
+    padding-left:2.5em;
+}
+span.color_p {
+    font-style:italic;
+    color:Brown;
+}
+span.param {
+    font-style:italic;
+}
+span.focus_p {
+    font-style:italic;
+    background-color:#DCDCDC;
+}
+span.ttype {
+    font-weight:100;
+}
+span.nowrap {
+    white-space:nowrap;
+}
+span.value {
+    white-space:nowrap;
+    font-weight:bold;
+}
+.passed {
+    background-color:#CCFFCC;
+    font-weight:100;
+}
+.warning {
+    background-color:#F4F4AF;
+    font-weight:100;
+}
+.failed {
+    background-color:#FFCCCC;
+    font-weight:100;
+}
+.new {
+    background-color:#C6DEFF;
+    font-weight:100;
+}
+
+.compatible {
+    background-color:#CCFFCC;
+    font-weight:100;
+}
+.almost_compatible {
+    background-color:#FFDAA3;
+    font-weight:100;
+}
+.incompatible {
+    background-color:#FFCCCC;
+    font-weight:100;
+}
+.gray {
+    background-color:#DCDCDC;
+    font-weight:100;
+}
+
+.top_ref {
+    font-size:0.69em;
+}
+.footer {
+    font-size:0.8125em;
+}
diff --git a/tools/japicc/modules/Internals/Css/Tabs.css b/tools/japicc/modules/Internals/Css/Tabs.css
new file mode 100644
index 0000000..1a90231
--- /dev/null
+++ b/tools/japicc/modules/Internals/Css/Tabs.css
@@ -0,0 +1,34 @@
+.tabset {
+    float:left;
+}
+a.tab {
+    border:1px solid Black;
+    float:left;
+    margin:0px 5px -1px 0px;
+    padding:3px 5px 3px 5px;
+    position:relative;
+    font-size:0.875em;
+    background-color:#DDD;
+    text-decoration:none;
+    color:Black;
+}
+a.disabled:hover
+{
+    color:Black;
+    background:#EEE;
+}
+a.active:hover
+{
+    color:Black;
+    background:White;
+}
+a.active {
+    border-bottom-color:White;
+    background-color:White;
+}
+div.tab {
+    border-top:1px solid Black;
+    padding:0px;
+    width:100%;
+    clear:both;
+}
diff --git a/tools/japicc/modules/Internals/Descriptor.pm b/tools/japicc/modules/Internals/Descriptor.pm
new file mode 100644
index 0000000..13154b4
--- /dev/null
+++ b/tools/japicc/modules/Internals/Descriptor.pm
@@ -0,0 +1,94 @@
+###########################################################################
+# A module to handle XML descriptors
+#
+# Copyright (C) 2016 Andrey Ponomarenko's ABI Laboratory
+#
+# Written by Andrey Ponomarenko
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License or the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# and the GNU Lesser General Public License along with this program.
+# If not, see <http://www.gnu.org/licenses/>.
+###########################################################################
+use strict;
+
+sub createDesc($$)
+{
+    my ($Path, $LVer) = @_;
+    
+    if(not -e $Path) {
+        return undef;
+    }
+    
+    if(-d $Path or $Path=~/\.jar\Z/)
+    {
+        return "
+            <version>
+                ".$In::Desc{$LVer}{"TargetVersion"}."
+            </version>
+            
+            <archives>
+                $Path
+            </archives>";
+    }
+    
+    # standard XML-descriptor
+    return readFile($Path);
+}
+
+sub readDesc($$)
+{
+    my ($Content, $LVer) = @_;
+    
+    if(not $Content) {
+        exitStatus("Error", "XML descriptor is empty");
+    }
+    
+    if($Content!~/\</) {
+        exitStatus("Error", "descriptor should be one of the following: Java archive, XML descriptor, API dump or directory with Java archives.");
+    }
+    
+    $Content=~s/\/\*(.|\n)+?\*\///g;
+    $Content=~s/<\!--(.|\n)+?-->//g;
+    $In::Desc{$LVer}{"Version"} = parseTag(\$Content, "version");
+    
+    if(defined $In::Desc{$LVer}{"TargetVersion"}) {
+        $In::Desc{$LVer}{"Version"} = $In::Desc{$LVer}{"TargetVersion"};
+    }
+    
+    if($In::Desc{$LVer}{"Version"} eq "") {
+        exitStatus("Error", "version in the XML descriptor is not specified (<version> section)");
+    }
+    
+    if(my $Archives = parseTag(\$Content, "archives"))
+    {
+        foreach my $Path (split(/\s*\n\s*/, $Archives))
+        {
+            if(not -e $Path) {
+                exitStatus("Access_Error", "can't access \'$Path\'");
+            }
+            $Path = getAbsPath($Path);
+            $In::Desc{$LVer}{"Archives"}{$Path} = 1;
+        }
+    }
+    else {
+        exitStatus("Error", "descriptor does not contain info about Java archives");
+    }
+    
+    foreach my $Package (split(/\s*\n\s*/, parseTag(\$Content, "skip_packages"))) {
+        $In::Desc{$LVer}{"SkipPackages"}{$Package} = 1;
+    }
+    foreach my $Package (split(/\s*\n\s*/, parseTag(\$Content, "packages"))) {
+        $In::Desc{$LVer}{"KeepPackages"}{$Package} = 1;
+    }
+}
+
+return 1;
diff --git a/tools/japicc/modules/Internals/Filter.pm b/tools/japicc/modules/Internals/Filter.pm
new file mode 100644
index 0000000..0993adf
--- /dev/null
+++ b/tools/japicc/modules/Internals/Filter.pm
@@ -0,0 +1,309 @@
+###########################################################################
+# A module to filter API symbols
+#
+# Copyright (C) 2016-2017 Andrey Ponomarenko's ABI Laboratory
+#
+# Written by Andrey Ponomarenko
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License or the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# and the GNU Lesser General Public License along with this program.
+# If not, see <http://www.gnu.org/licenses/>.
+###########################################################################
+use strict;
+
+my %SkippedPackage;
+
+sub classFilter($$$)
+{
+    my ($Class, $LVer, $ClassContext) = @_;
+    
+    if(defined $Class->{"Dep"}) {
+        return 0;
+    }
+    
+    my $CName = $Class->{"Name"};
+    my $Package = $Class->{"Package"};
+    
+    if(defined $In::Opt{"ClassListPath"}
+    and not defined $In::Opt{"ClassList_User"}{$CName})
+    { # user defined classes
+        return 0;
+    }
+    
+    if(defined $In::Opt{"SkipClassesList"})
+    { # user defined classes
+        if(defined $In::Opt{"SkipClasses"}{$CName}) {
+            return 0;
+        }
+        else
+        {
+            my $SClass = $CName;
+            
+            while($SClass=~s/\.[^\.]+?\Z//)
+            {
+                if(defined $In::Opt{"SkipClasses"}{$SClass}) {
+                    return 0;
+                }
+            }
+        }
+    }
+    
+    if(skipPackage($Package, $LVer))
+    { # internal packages
+        return 0;
+    }
+    
+    if(skipType($CName))
+    { # internal types
+        return 0;
+    }
+    
+    if($ClassContext)
+    {
+        my @Ann = ();
+        
+        if(defined $Class->{"Annotations"}) {
+            @Ann = keys(%{$Class->{"Annotations"}});
+        }
+        
+        if(not annotationFilter(\@Ann, $LVer)) {
+            return 0;
+        }
+        
+        if($In::Opt{"ClientPath"})
+        {
+            if(not defined $In::Opt{"UsedClasses_Client"}{$CName}) {
+                return 0;
+            }
+        }
+    }
+    
+    return 1;
+}
+
+sub methodFilter($$)
+{
+    my ($Method, $LVer) = @_;
+    
+    my $MAttr = $In::API{$LVer}{"MethodInfo"}{$Method};
+    my $MName = $MAttr->{"Name"};
+    
+    if(defined $MAttr->{"Dep"}) {
+        return 0;
+    }
+    
+    if($MAttr->{"Access"}=~/private/)
+    { # non-public
+        return 0;
+    }
+    
+    my $ClassId = $MAttr->{"Class"};
+    my $Class = getType($ClassId, $LVer);
+    
+    if($Class->{"Access"}=~/private/)
+    { # skip private classes
+        return 0;
+    }
+    
+    my $Package = $MAttr->{"Package"};
+    
+    my @Ann = ();
+    
+    if(defined $Class->{"Annotations"}) {
+        @Ann = (@Ann, keys(%{$Class->{"Annotations"}}));
+    }
+    
+    if(defined $MAttr->{"Annotations"}) {
+        @Ann = (@Ann, keys(%{$MAttr->{"Annotations"}}));
+    }
+    
+    if(not annotationFilter(\@Ann, $LVer)) {
+        return 0;
+    }
+    
+    if($In::Opt{"ClientPath"})
+    { # user defined application
+        if(not defined $In::Opt{"UsedMethods_Client"}{$MName}
+        and not defined $In::Opt{"UsedClasses_Client"}{$Class->{"Name"}}) {
+            return 0;
+        }
+    }
+    
+    if(skipPackage($Package, $LVer))
+    { # internal packages
+        return 0;
+    }
+    
+    if(not classFilter($Class, $LVer, 0)) {
+        return 0;
+    }
+    
+    if(defined $In::Opt{"SkipDeprecated"})
+    {
+        if($Class->{"Deprecated"})
+        { # deprecated class
+            return 0;
+        }
+        if($MAttr->{"Deprecated"})
+        { # deprecated method
+            return 0;
+        }
+    }
+    
+    return 1;
+}
+
+sub annotationFilter($$)
+{
+    my ($Ann, $LVer) = @_;
+    
+    if(not defined $In::Opt{"CountMethods"})
+    {
+        if(defined $In::Opt{"AddedAnnotations"} and $LVer==1) {
+            return 1;
+        }
+        
+        if(defined $In::Opt{"RemovedAnnotations"} and $LVer==2) {
+            return 1;
+        }
+    }
+    
+    if($In::Opt{"SkipAnnotationsListPath"})
+    {
+        foreach my $Aid (@{$Ann})
+        {
+            my $AName = $In::API{$LVer}{"TypeInfo"}{$Aid}{"Name"};
+            
+            if(defined $In::Opt{"SkipAnnotationList_User"}{$AName}) {
+                return 0;
+            }
+        }
+    }
+    
+    if($In::Opt{"AnnotationsListPath"})
+    {
+        my $Annotated = 0;
+        
+        foreach my $Aid (@{$Ann})
+        {
+            my $AName = $In::API{$LVer}{"TypeInfo"}{$Aid}{"Name"};
+            
+            if(defined $In::Opt{"AnnotationList_User"}{$AName})
+            {
+                $Annotated = 1;
+                last;
+            }
+        }
+        
+        if(not $Annotated) {
+            return 0;
+        }
+    }
+    
+    return 1;
+}
+
+sub skipType($)
+{
+    my $TName = $_[0];
+    
+    if(my $SkipInternalTypes = $In::Opt{"SkipInternalTypes"})
+    {
+        if($TName=~/($SkipInternalTypes)/) {
+            return 1;
+        }
+    }
+    
+    return 0;
+}
+
+sub skipPackage($$)
+{
+    my ($Package, $LVer) = @_;
+    
+    if(my $SkipInternalPackages = $In::Opt{"SkipInternalPackages"})
+    {
+        if($Package=~/($SkipInternalPackages)/) {
+            return 1;
+        }
+    }
+    
+    if(defined $In::Desc{$LVer}{"SkipPackages"})
+    {
+        foreach my $P (keys(%{$In::Desc{$LVer}{"SkipPackages"}}))
+        {
+            if($Package=~/\A\Q$P\E(\.|\Z)/)
+            { # user skipped packages
+                return 1;
+            }
+        }
+    }
+    
+    if(not defined $In::Opt{"KeepInternal"})
+    {
+        my $Note = (not keys(%SkippedPackage));
+        
+        if($Package=~/(\A|\.)(internal|impl|examples)(\.|\Z)/)
+        { # internal packages
+            my $P = $2;
+            if(not $SkippedPackage{$LVer}{$P})
+            {
+                $SkippedPackage{$LVer}{$P} = 1;
+                printMsg("WARNING", "skipping \"$P\" packages");
+                
+                if($Note) {
+                    printMsg("NOTE", "use --keep-internal option to check them");
+                }
+            }
+            return 1;
+        }
+    }
+    
+    if(defined $In::Desc{$LVer}{"KeepPackages"}
+    and my @Keeped = keys(%{$In::Desc{$LVer}{"KeepPackages"}}))
+    {
+        my $UserKeeped = 0;
+        foreach my $P (@Keeped)
+        {
+            if($Package=~/\A\Q$P\E(\.|\Z)/)
+            { # user keeped packages
+                $UserKeeped = 1;
+                last;
+            }
+        }
+        if(not $UserKeeped) {
+            return 1;
+        }
+    }
+    
+    return 0;
+}
+
+sub ignorePath($$)
+{
+    my ($Path, $Prefix) = @_;
+    
+    if($Path=~/\~\Z/)
+    { # skipping system backup files
+        return 1;
+    }
+    
+    # skipping hidden .svn, .git, .bzr, .hg and CVS directories
+    if(cutPrefix($Path, $Prefix)=~/(\A|[\/\\]+)(\.(svn|git|bzr|hg)|CVS)([\/\\]+|\Z)/)
+    {
+        return 1;
+    }
+    
+    return 0;
+}
+
+return 1;
diff --git a/tools/japicc/modules/Internals/Input.pm b/tools/japicc/modules/Internals/Input.pm
new file mode 100644
index 0000000..ac949ca
--- /dev/null
+++ b/tools/japicc/modules/Internals/Input.pm
@@ -0,0 +1,32 @@
+###########################################################################
+# A module to handle input data
+#
+# Copyright (C) 2016 Andrey Ponomarenko's ABI Laboratory
+#
+# Written by Andrey Ponomarenko
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License or the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# and the GNU Lesser General Public License along with this program.
+# If not, see <http://www.gnu.org/licenses/>.
+###########################################################################
+package In;
+
+# Input options
+our %Opt;
+
+# Descriptor of input data
+our %Desc;
+
+# API
+our %API;
+
+return 1;
diff --git a/tools/japicc/modules/Internals/Js/Sections.js b/tools/japicc/modules/Internals/Js/Sections.js
new file mode 100644
index 0000000..8a60fbf
--- /dev/null
+++ b/tools/japicc/modules/Internals/Js/Sections.js
@@ -0,0 +1,16 @@
+function sC(header, id)
+{
+    e = document.getElementById(id);
+    if(e.style.display == 'none')
+    {
+        e.style.display = 'block';
+        e.style.visibility = 'visible';
+        header.innerHTML = header.innerHTML.replace(/\[[^0-9 ]\]/gi, "[−]");
+    }
+    else
+    {
+        e.style.display = 'none';
+        e.style.visibility = 'hidden';
+        header.innerHTML = header.innerHTML.replace(/\[[^0-9 ]\]/gi, "[+]");
+    }
+}
diff --git a/tools/japicc/modules/Internals/Js/Tabs.js b/tools/japicc/modules/Internals/Js/Tabs.js
new file mode 100644
index 0000000..a2a9128
--- /dev/null
+++ b/tools/japicc/modules/Internals/Js/Tabs.js
@@ -0,0 +1,64 @@
+function initTabs()
+{
+    var url = window.location.href;
+    if(url.indexOf('_Source_')!=-1 || url.indexOf('#Source')!=-1)
+    {
+        var tab1 = document.getElementById('BinaryID');
+        var tab2 = document.getElementById('SourceID');
+        tab1.className='tab disabled';
+        tab2.className='tab active';
+    }
+    
+    var sets = document.getElementsByTagName('div');
+    for (var i = 0; i < sets.length; i++)
+    {
+        if (sets[i].className.indexOf('tabset') != -1)
+        {
+            var tabs = [];
+            var links = sets[i].getElementsByTagName('a');
+            for (var j = 0; j < links.length; j++)
+            {
+                if (links[j].className.indexOf('tab') != -1)
+                {
+                    tabs.push(links[j]);
+                    links[j].tabs = tabs;
+                    var tab = document.getElementById(links[j].href.substr(links[j].href.indexOf('#') + 1));
+                    //reset all tabs on start
+                    if (tab)
+                    {
+                        if (links[j].className.indexOf('active')!=-1) {
+                            tab.style.display = 'block';
+                        }
+                        else {
+                            tab.style.display = 'none';
+                        }
+                    }
+                    links[j].onclick = function()
+                    {
+                        var tab = document.getElementById(this.href.substr(this.href.indexOf('#') + 1));
+                        if (tab)
+                        {
+                            //reset all tabs before change
+                            for (var k = 0; k < this.tabs.length; k++)
+                            {
+                                document.getElementById(this.tabs[k].href.substr(this.tabs[k].href.indexOf('#') + 1)).style.display = 'none';
+                                this.tabs[k].className = this.tabs[k].className.replace('active', 'disabled');
+                            }
+                            this.className = 'tab active';
+                            tab.style.display = 'block';
+                            // window.location.hash = this.id.replace('ID', '');
+                            return false;
+                        }
+                    }
+                }
+            }
+        }
+    }
+    
+    if(url.indexOf('#')!=-1) {
+        location.href=location.href;
+    }
+}
+
+if (window.addEventListener) window.addEventListener('load', initTabs, false);
+else if (window.attachEvent) window.attachEvent('onload', initTabs);
diff --git a/tools/japicc/modules/Internals/Logging.pm b/tools/japicc/modules/Internals/Logging.pm
new file mode 100644
index 0000000..e20fd5f
--- /dev/null
+++ b/tools/japicc/modules/Internals/Logging.pm
@@ -0,0 +1,90 @@
+###########################################################################
+# A module for logging
+#
+# Copyright (C) 2016-2017 Andrey Ponomarenko's ABI Laboratory
+#
+# Written by Andrey Ponomarenko
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License or the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# and the GNU Lesser General Public License along with this program.
+# If not, see <http://www.gnu.org/licenses/>.
+###########################################################################
+use strict;
+
+my %DEBUG_DIR;
+
+my %ERROR_CODE = (
+    # Compatible verdict
+    "Compatible"=>0,
+    "Success"=>0,
+    # Incompatible verdict
+    "Incompatible"=>1,
+    # Undifferentiated error code
+    "Error"=>2,
+    # System command is not found
+    "Not_Found"=>3,
+    # Cannot access input files
+    "Access_Error"=>4,
+    # Invalid input API dump
+    "Invalid_Dump"=>7,
+    # Incompatible version of API dump
+    "Dump_Version"=>8,
+    # Cannot find a module
+    "Module_Error"=>9
+);
+
+sub exitStatus($$)
+{
+    my ($Code, $Msg) = @_;
+    print STDERR "ERROR: ". $Msg."\n";
+    exit($ERROR_CODE{$Code});
+}
+
+sub getErrorCode($) {
+    return $ERROR_CODE{$_[0]};
+}
+
+sub printMsg($$)
+{
+    my ($Type, $Msg) = @_;
+    if($Type!~/\AINFO/) {
+        $Msg = $Type.": ".$Msg;
+    }
+    if($Type!~/_C\Z/) {
+        $Msg .= "\n";
+    }
+    if($Type eq "ERROR") {
+        print STDERR $Msg;
+    }
+    else {
+        print $Msg;
+    }
+}
+
+sub initLogging($)
+{
+    my $LVer = $_[0];
+    if($In::Opt{"Debug"})
+    { # debug directory
+        $DEBUG_DIR{$LVer} = "debug/".$In::Opt{"TargetLib"}."/".$In::Desc{$LVer}{"Version"};
+        
+        if(-d $DEBUG_DIR{$LVer}) {
+            rmtree($DEBUG_DIR{$LVer});
+        }
+    }
+}
+
+sub getDebugDir($) {
+    return $DEBUG_DIR{$_[0]};
+}
+
+return 1;
diff --git a/tools/japicc/modules/Internals/Mangling.pm b/tools/japicc/modules/Internals/Mangling.pm
new file mode 100644
index 0000000..52033da
--- /dev/null
+++ b/tools/japicc/modules/Internals/Mangling.pm
@@ -0,0 +1,100 @@
+###########################################################################
+# A module to unmangle symbols
+#
+# Copyright (C) 2016 Andrey Ponomarenko's ABI Laboratory
+#
+# Written by Andrey Ponomarenko
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License or the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# and the GNU Lesser General Public License along with this program.
+# If not, see <http://www.gnu.org/licenses/>.
+###########################################################################
+use strict;
+
+sub unmangle($)
+{
+    my $Name = $_[0];
+    
+    $Name=~s!/!.!g;
+    $Name=~s!:\(!(!g;
+    $Name=~s!\).+\Z!)!g;
+    
+    if($Name=~/\A(.+)\((.+)\)/)
+    {
+        my ($ShortName, $MangledParams) = ($1, $2);
+        my @UnmangledParams = ();
+        my ($IsArray, $Shift, $Pos, $CurParam) = (0, 0, 0, "");
+        while($Pos<length($MangledParams))
+        {
+            my $Symbol = substr($MangledParams, $Pos, 1);
+            if($Symbol eq "[")
+            { # array
+                $IsArray = 1;
+                $Pos+=1;
+            }
+            elsif($Symbol eq "L")
+            { # class
+                if(substr($MangledParams, $Pos+1)=~/\A(.+?);/) {
+                    $CurParam = $1;
+                    $Shift = length($CurParam)+2;
+                }
+                if($IsArray) {
+                    $CurParam .= "[]";
+                }
+                $Pos+=$Shift;
+                push(@UnmangledParams, $CurParam);
+                ($IsArray, $Shift, $CurParam) = (0, 0, "")
+            }
+            else
+            {
+                if($Symbol eq "C") {
+                    $CurParam = "char";
+                }
+                elsif($Symbol eq "B") {
+                    $CurParam = "byte";
+                }
+                elsif($Symbol eq "S") {
+                    $CurParam = "short";
+                }
+                elsif($Symbol eq "S") {
+                    $CurParam = "short";
+                }
+                elsif($Symbol eq "I") {
+                    $CurParam = "int";
+                }
+                elsif($Symbol eq "F") {
+                    $CurParam = "float";
+                }
+                elsif($Symbol eq "J") {
+                    $CurParam = "long";
+                }
+                elsif($Symbol eq "D") {
+                    $CurParam = "double";
+                }
+                else {
+                    printMsg("INFO", "WARNING: unmangling error");
+                }
+                if($IsArray) {
+                    $CurParam .= "[]";
+                }
+                $Pos+=1;
+                push(@UnmangledParams, $CurParam);
+                ($IsArray, $Shift, $CurParam) = (0, 0, "")
+            }
+        }
+        return $ShortName."(".join(", ", @UnmangledParams).")";
+    }
+    
+    return $Name;
+}
+
+return 1;
diff --git a/tools/japicc/modules/Internals/Path.pm b/tools/japicc/modules/Internals/Path.pm
new file mode 100644
index 0000000..8a5c3bd
--- /dev/null
+++ b/tools/japicc/modules/Internals/Path.pm
@@ -0,0 +1,81 @@
+###########################################################################
+# A module with functions to handle paths
+#
+# Copyright (C) 2017 Andrey Ponomarenko's ABI Laboratory
+#
+# Written by Andrey Ponomarenko
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License or the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# and the GNU Lesser General Public License along with this program.
+# If not, see <http://www.gnu.org/licenses/>.
+###########################################################################
+use strict;
+use Cwd qw(realpath);
+
+sub pathFmt(@)
+{
+    my $Path = shift(@_);
+    my $Fmt = $In::Opt{"OS"};
+    if(@_) {
+        $Fmt = shift(@_);
+    }
+    
+    $Path=~s/[\/\\]+\.?\Z//g;
+    if($Fmt eq "windows")
+    {
+        $Path=~s/\//\\/g;
+        $Path = lc($Path);
+    }
+    else {
+        $Path=~s/\\/\//g;
+    }
+    
+    $Path=~s/[\/\\]+\Z//g;
+    
+    return $Path;
+}
+
+sub getAbsPath($)
+{ # abs_path() should NOT be called for absolute inputs
+  # because it can change them
+    my $Path = $_[0];
+    if(not isAbsPath($Path)) {
+        $Path = abs_path($Path);
+    }
+    return pathFmt($Path, $In::Opt{"OS"});
+}
+
+sub realpath_F($)
+{
+    my $Path = $_[0];
+    return pathFmt(realpath($Path));
+}
+
+sub join_P($$)
+{
+    my $S = "/";
+    if($In::Opt{"OS"} eq "windows") {
+        $S = "\\";
+    }
+    return join($S, @_);
+}
+
+sub join_A($$)
+{
+    my $S = ":";
+    if($In::Opt{"OS"} eq "windows") {
+        $S = ";";
+    }
+    return join($S, @_);
+}
+
+return 1;
diff --git a/tools/japicc/modules/Internals/RegTests.pm b/tools/japicc/modules/Internals/RegTests.pm
new file mode 100644
index 0000000..d7b58f2
--- /dev/null
+++ b/tools/japicc/modules/Internals/RegTests.pm
@@ -0,0 +1,1591 @@
+###########################################################################
+# A module with regression test suite
+#
+# Copyright (C) 2016-2017 Andrey Ponomarenko's ABI Laboratory
+#
+# Written by Andrey Ponomarenko
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License or the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# and the GNU Lesser General Public License along with this program.
+# If not, see <http://www.gnu.org/licenses/>.
+###########################################################################
+use strict;
+use File::Copy qw(copy);
+
+sub testTool()
+{
+    printMsg("INFO", "\nVerifying detectable Java library changes");
+    
+    printMsg("INFO", "Creating test library ...");
+    my $LibName = "libsample_java";
+    if(-d $LibName) {
+        rmtree($LibName);
+    }
+    
+    my $PackageName = "TestPackage";
+    my $Path_v1 = "$LibName/$PackageName.v1/$PackageName";
+    mkpath($Path_v1);
+    
+    my $Path_v2 = "$LibName/$PackageName.v2/$PackageName";
+    mkpath($Path_v2);
+    
+    my $TestsPath = "$LibName/Tests";
+    mkpath($TestsPath);
+    
+    # FirstCheckedException
+    my $FirstCheckedException = "package $PackageName;
+    public class FirstCheckedException extends Exception {
+    }";
+    writeFile($Path_v1."/FirstCheckedException.java", $FirstCheckedException);
+    writeFile($Path_v2."/FirstCheckedException.java", $FirstCheckedException);
+    
+    # SecondCheckedException
+    my $SecondCheckedException = "package $PackageName;
+    public class SecondCheckedException extends Exception {
+    }";
+    writeFile($Path_v1."/SecondCheckedException.java", $SecondCheckedException);
+    writeFile($Path_v2."/SecondCheckedException.java", $SecondCheckedException);
+    
+    # FirstUncheckedException
+    my $FirstUncheckedException = "package $PackageName;
+    public class FirstUncheckedException extends RuntimeException {
+    }";
+    writeFile($Path_v1."/FirstUncheckedException.java", $FirstUncheckedException);
+    writeFile($Path_v2."/FirstUncheckedException.java", $FirstUncheckedException);
+    
+    # SecondUncheckedException
+    my $SecondUncheckedException = "package $PackageName;
+    public class SecondUncheckedException extends RuntimeException {
+    }";
+    writeFile($Path_v1."/SecondUncheckedException.java", $SecondUncheckedException);
+    writeFile($Path_v2."/SecondUncheckedException.java", $SecondUncheckedException);
+    
+    # BaseAbstractClass
+    my $BaseAbstractClass = "package $PackageName;
+    public abstract class BaseAbstractClass {
+        public Integer field;
+        public Integer someMethod(Integer param) { return param; }
+        public abstract Integer abstractMethod(Integer param);
+    }";
+    writeFile($Path_v1."/BaseAbstractClass.java", $BaseAbstractClass);
+    writeFile($Path_v2."/BaseAbstractClass.java", $BaseAbstractClass);
+    
+    # Removed_Annotation
+    writeFile($Path_v1."/RemovedAnnotation.java",
+    "package $PackageName;
+    public \@interface RemovedAnnotation {
+    }");
+    
+    # Beta Annotation
+    writeFile($Path_v1."/Beta.java",
+    "package $PackageName;
+    public \@interface Beta {
+    }");
+    
+    writeFile($Path_v2."/Beta.java",
+    "package $PackageName;
+    public \@interface Beta {
+    }");
+    
+    # BaseClass
+    my $BaseClass = "package $PackageName;
+    public class BaseClass {
+        public Integer field;
+        public Integer method(Integer param) { return param; }
+    }";
+    writeFile($Path_v1."/BaseClass.java", $BaseClass);
+    writeFile($Path_v2."/BaseClass.java", $BaseClass);
+    
+    # BaseClass2
+    my $BaseClass2 = "package $PackageName;
+    public class BaseClass2 {
+        public Integer field2;
+        public Integer method2(Integer param) { return param; }
+    }";
+    writeFile($Path_v1."/BaseClass2.java", $BaseClass2);
+    writeFile($Path_v2."/BaseClass2.java", $BaseClass2);
+    
+    # BaseInterface
+    my $BaseInterface = "package $PackageName;
+    public interface BaseInterface {
+        public Integer field = 100;
+        public Integer method(Integer param);
+    }";
+    writeFile($Path_v1."/BaseInterface.java", $BaseInterface);
+    writeFile($Path_v2."/BaseInterface.java", $BaseInterface);
+    
+    # BaseInterface2
+    my $BaseInterface2 = "package $PackageName;
+    public interface BaseInterface2 {
+        public Integer field2 = 100;
+        public Integer method2(Integer param);
+    }";
+    writeFile($Path_v1."/BaseInterface2.java", $BaseInterface2);
+    writeFile($Path_v2."/BaseInterface2.java", $BaseInterface2);
+    
+    # BaseConstantInterface
+    my $BaseConstantInterface = "package $PackageName;
+    public interface BaseConstantInterface {
+        public Integer CONSTANT = 10;
+        public Integer CONSTANT2 = 100;
+    }";
+    writeFile($Path_v1."/BaseConstantInterface.java", $BaseConstantInterface);
+    writeFile($Path_v2."/BaseConstantInterface.java", $BaseConstantInterface);
+    
+    # Removed_Method (Beta method)
+    writeFile($Path_v1."/RemovedBetaMethod.java",
+    "package $PackageName;
+    public class RemovedBetaMethod
+    {
+        \@Beta
+        public Integer someMethod() {
+            return 0;
+        }
+    }");
+    writeFile($Path_v2."/RemovedBetaMethod.java",
+    "package $PackageName;
+    public class RemovedBetaMethod {
+    }");
+    
+    # Removed_Method (from Beta class)
+    writeFile($Path_v1."/RemovedMethodFromBetaClass.java",
+    "package $PackageName;
+    \@Beta
+    public class RemovedMethodFromBetaClass
+    {
+        public Integer someMethod() {
+            return 0;
+        }
+    }");
+    writeFile($Path_v2."/RemovedMethodFromBetaClass.java",
+    "package $PackageName;
+    \@Beta
+    public class RemovedMethodFromBetaClass {
+    }");
+    
+    # Removed_Class (Beta)
+    writeFile($Path_v1."/RemovedBetaClass.java",
+    "package $PackageName;
+    \@Beta
+    public class RemovedBetaClass
+    {
+        public Integer someMethod() {
+            return 0;
+        }
+    }");
+    
+    # Abstract_Method_Added_Checked_Exception
+    writeFile($Path_v1."/AbstractMethodAddedCheckedException.java",
+    "package $PackageName;
+    public abstract class AbstractMethodAddedCheckedException {
+        public abstract Integer someMethod() throws FirstCheckedException;
+    }");
+    writeFile($Path_v2."/AbstractMethodAddedCheckedException.java",
+    "package $PackageName;
+    public abstract class AbstractMethodAddedCheckedException {
+        public abstract Integer someMethod() throws FirstCheckedException, SecondCheckedException;
+    }");
+    
+    # Abstract_Method_Removed_Checked_Exception
+    writeFile($Path_v1."/AbstractMethodRemovedCheckedException.java",
+    "package $PackageName;
+    public abstract class AbstractMethodRemovedCheckedException {
+        public abstract Integer someMethod() throws FirstCheckedException, SecondCheckedException;
+    }");
+    writeFile($Path_v2."/AbstractMethodRemovedCheckedException.java",
+    "package $PackageName;
+    public abstract class AbstractMethodRemovedCheckedException {
+        public abstract Integer someMethod() throws FirstCheckedException;
+    }");
+    
+    # NonAbstract_Method_Added_Checked_Exception
+    writeFile($Path_v1."/NonAbstractMethodAddedCheckedException.java",
+    "package $PackageName;
+    public class NonAbstractMethodAddedCheckedException {
+        public Integer someMethod() throws FirstCheckedException {
+            return 10;
+        }
+    }");
+    writeFile($Path_v2."/NonAbstractMethodAddedCheckedException.java",
+    "package $PackageName;
+    public class NonAbstractMethodAddedCheckedException {
+        public Integer someMethod() throws FirstCheckedException, SecondCheckedException {
+            return 10;
+        }
+    }");
+    
+    # NonAbstract_Method_Removed_Checked_Exception
+    writeFile($Path_v1."/NonAbstractMethodRemovedCheckedException.java",
+    "package $PackageName;
+    public class NonAbstractMethodRemovedCheckedException {
+        public Integer someMethod() throws FirstCheckedException, SecondCheckedException {
+            return 10;
+        }
+    }");
+    writeFile($Path_v2."/NonAbstractMethodRemovedCheckedException.java",
+    "package $PackageName;
+    public class NonAbstractMethodRemovedCheckedException {
+        public Integer someMethod() throws FirstCheckedException {
+            return 10;
+        }
+    }");
+    
+    # Added_Unchecked_Exception
+    writeFile($Path_v1."/AddedUncheckedException.java",
+    "package $PackageName;
+    public class AddedUncheckedException {
+        public Integer someMethod() throws FirstUncheckedException {
+            return 10;
+        }
+    }");
+    writeFile($Path_v2."/AddedUncheckedException.java",
+    "package $PackageName;
+    public class AddedUncheckedException {
+        public Integer someMethod() throws FirstUncheckedException, SecondUncheckedException, NullPointerException {
+            return 10;
+        }
+    }");
+    
+    # Removed_Unchecked_Exception
+    writeFile($Path_v1."/RemovedUncheckedException.java",
+    "package $PackageName;
+    public class RemovedUncheckedException {
+        public Integer someMethod() throws FirstUncheckedException, SecondUncheckedException, NullPointerException {
+            return 10;
+        }
+    }");
+    writeFile($Path_v2."/RemovedUncheckedException.java",
+    "package $PackageName;
+    public class RemovedUncheckedException {
+        public Integer someMethod() throws FirstUncheckedException {
+            return 10;
+        }
+    }");
+    
+    # Changed_Method_Return_From_Void
+    writeFile($Path_v1."/ChangedMethodReturnFromVoid.java",
+    "package $PackageName;
+    public class ChangedMethodReturnFromVoid {
+        public void changedMethod(Integer param1, String[] param2) { }
+    }");
+    writeFile($Path_v2."/ChangedMethodReturnFromVoid.java",
+    "package $PackageName;
+    public class ChangedMethodReturnFromVoid {
+        public Integer changedMethod(Integer param1, String[] param2){
+            return param1;
+        }
+    }");
+    
+    # Added_Method
+    writeFile($Path_v1."/AddedMethod.java",
+    "package $PackageName;
+    public class AddedMethod {
+        public Integer field = 100;
+    }");
+    writeFile($Path_v2."/AddedMethod.java",
+    "package $PackageName;
+    public class AddedMethod {
+        public Integer field = 100;
+        public Integer addedMethod(Integer param1, String[] param2) { return param1; }
+        public static String[] addedStaticMethod(String[] param) { return param; }
+    }");
+    
+    # Added_Method (Constructor)
+    writeFile($Path_v1."/AddedConstructor.java",
+    "package $PackageName;
+    public class AddedConstructor {
+        public Integer field = 100;
+    }");
+    writeFile($Path_v2."/AddedConstructor.java",
+    "package $PackageName;
+    public class AddedConstructor {
+        public Integer field = 100;
+        public AddedConstructor() { }
+        public AddedConstructor(Integer x, String y) { }
+    }");
+    
+    # Class_Added_Field
+    writeFile($Path_v1."/ClassAddedField.java",
+    "package $PackageName;
+    public class ClassAddedField {
+        public Integer otherField;
+    }");
+    writeFile($Path_v2."/ClassAddedField.java",
+    "package $PackageName;
+    public class ClassAddedField {
+        public Integer addedField;
+        public Integer otherField;
+    }");
+    
+    # Interface_Added_Field
+    writeFile($Path_v1."/InterfaceAddedField.java",
+    "package $PackageName;
+    public interface InterfaceAddedField {
+        public Integer method();
+    }");
+    writeFile($Path_v2."/InterfaceAddedField.java",
+    "package $PackageName;
+    public interface InterfaceAddedField {
+        public Integer addedField = 100;
+        public Integer method();
+    }");
+    
+    # Removed_NonConstant_Field (Class)
+    writeFile($Path_v1."/ClassRemovedField.java",
+    "package $PackageName;
+    public class ClassRemovedField {
+        public Integer removedField;
+        public Integer otherField;
+    }");
+    writeFile($Path_v2."/ClassRemovedField.java",
+    "package $PackageName;
+    public class ClassRemovedField {
+        public Integer otherField;
+    }");
+    
+    writeFile($TestsPath."/Test_ClassRemovedField.java",
+    "import $PackageName.*;
+    public class Test_ClassRemovedField {
+        public static void main(String[] args) {
+            ClassRemovedField X = new ClassRemovedField();
+            Integer Copy = X.removedField;
+        }
+    }");
+    
+    writeFile($TestsPath."/Test_RemovedAnnotation.java",
+    "import $PackageName.*;
+    public class Test_RemovedAnnotation {
+        public static void main(String[] args) {
+            testMethod();
+        }
+        
+        \@RemovedAnnotation
+        static void testMethod() {
+        }
+    }");
+    
+    # Removed_Constant_Field (Interface)
+    writeFile($Path_v1."/InterfaceRemovedConstantField.java",
+    "package $PackageName;
+    public interface InterfaceRemovedConstantField {
+        public String someMethod();
+        public int removedField_Int = 1000;
+        public String removedField_Str = \"Value\";
+    }");
+    writeFile($Path_v2."/InterfaceRemovedConstantField.java",
+    "package $PackageName;
+    public interface InterfaceRemovedConstantField {
+        public String someMethod();
+    }");
+    
+    # Removed_NonConstant_Field (Interface)
+    writeFile($Path_v1."/InterfaceRemovedField.java",
+    "package $PackageName;
+    public interface InterfaceRemovedField {
+        public String someMethod();
+        public BaseClass removedField = new BaseClass();
+    }");
+    writeFile($Path_v2."/InterfaceRemovedField.java",
+    "package $PackageName;
+    public interface InterfaceRemovedField {
+        public String someMethod();
+    }");
+    
+    # Renamed_Field
+    writeFile($Path_v1."/RenamedField.java",
+    "package $PackageName;
+    public class RenamedField {
+        public String oldName;
+    }");
+    writeFile($Path_v2."/RenamedField.java",
+    "package $PackageName;
+    public class RenamedField {
+        public String newName;
+    }");
+    
+    # Renamed_Constant_Field
+    writeFile($Path_v1."/RenamedConstantField.java",
+    "package $PackageName;
+    public class RenamedConstantField {
+        public final String oldName = \"Value\";
+    }");
+    writeFile($Path_v2."/RenamedConstantField.java",
+    "package $PackageName;
+    public class RenamedConstantField {
+        public final String newName = \"Value\";
+    }");
+    
+    # Changed_Field_Type
+    writeFile($Path_v1."/ChangedFieldType.java",
+    "package $PackageName;
+    public class ChangedFieldType {
+        public String fieldName;
+    }");
+    writeFile($Path_v2."/ChangedFieldType.java",
+    "package $PackageName;
+    public class ChangedFieldType {
+        public Integer fieldName;
+    }");
+    
+    # Changed_Field_Access
+    writeFile($Path_v1."/ChangedFieldAccess.java",
+    "package $PackageName;
+    public class ChangedFieldAccess {
+        public String fieldName;
+    }");
+    writeFile($Path_v2."/ChangedFieldAccess.java",
+    "package $PackageName;
+    public class ChangedFieldAccess {
+        private String fieldName;
+    }");
+    
+    # Changed_Final_Field_Value
+    writeFile($Path_v1."/ChangedFinalFieldValue.java",
+    "package $PackageName;
+    public class ChangedFinalFieldValue {
+        public final int field = 1;
+        public final String field2 = \" \";
+    }");
+    writeFile($Path_v2."/ChangedFinalFieldValue.java",
+    "package $PackageName;
+    public class ChangedFinalFieldValue {
+        public final int field = 2;
+        public final String field2 = \"newValue\";
+    }");
+    
+    # NonConstant_Field_Became_Static
+    writeFile($Path_v1."/NonConstantFieldBecameStatic.java",
+    "package $PackageName;
+    public class NonConstantFieldBecameStatic {
+        public String fieldName;
+    }");
+    writeFile($Path_v2."/NonConstantFieldBecameStatic.java",
+    "package $PackageName;
+    public class NonConstantFieldBecameStatic {
+        public static String fieldName;
+    }");
+    
+    # NonConstant_Field_Became_NonStatic
+    writeFile($Path_v1."/NonConstantFieldBecameNonStatic.java",
+    "package $PackageName;
+    public class NonConstantFieldBecameNonStatic {
+        public static String fieldName;
+    }");
+    writeFile($Path_v2."/NonConstantFieldBecameNonStatic.java",
+    "package $PackageName;
+    public class NonConstantFieldBecameNonStatic {
+        public String fieldName;
+    }");
+    
+    # Constant_Field_Became_NonStatic
+    writeFile($Path_v1."/ConstantFieldBecameNonStatic.java",
+    "package $PackageName;
+    public class ConstantFieldBecameNonStatic {
+        public final static String fieldName = \"Value\";
+    }");
+    writeFile($Path_v2."/ConstantFieldBecameNonStatic.java",
+    "package $PackageName;
+    public class ConstantFieldBecameNonStatic {
+        public final String fieldName = \"Value\";
+    }");
+    
+    # Field_Became_Final
+    writeFile($Path_v1."/FieldBecameFinal.java",
+    "package $PackageName;
+    public class FieldBecameFinal {
+        public String fieldName;
+    }");
+    writeFile($Path_v2."/FieldBecameFinal.java",
+    "package $PackageName;
+    public class FieldBecameFinal {
+        public final String fieldName = \"Value\";
+    }");
+    
+    # Field_Became_NonFinal
+    writeFile($Path_v1."/FieldBecameNonFinal.java",
+    "package $PackageName;
+    public class FieldBecameNonFinal {
+        public final String fieldName = \"Value\";
+    }");
+    writeFile($Path_v2."/FieldBecameNonFinal.java",
+    "package $PackageName;
+    public class FieldBecameNonFinal {
+        public String fieldName;
+    }");
+    
+    # Removed_Method
+    writeFile($Path_v1."/RemovedMethod.java",
+    "package $PackageName;
+    public class RemovedMethod {
+        public Integer field = 100;
+        public Integer removedMethod(Integer param1, String param2) { return param1; }
+        public static Integer removedStaticMethod(Integer param) { return param; }
+    }");
+    writeFile($Path_v2."/RemovedMethod.java",
+    "package $PackageName;
+    public class RemovedMethod {
+        public Integer field = 100;
+    }");
+    
+    # Removed_Method (move up to java.lang.Object)
+    writeFile($Path_v1."/MoveUpToJavaLangObject.java",
+    "package $PackageName;
+    public class MoveUpToJavaLangObject extends java.lang.Object {
+        public int hashCode() { return 0; }
+    }");
+    writeFile($Path_v2."/MoveUpToJavaLangObject.java",
+    "package $PackageName;
+    public class MoveUpToJavaLangObject extends java.lang.Object {
+    }");
+    
+    writeFile($TestsPath."/Test_MoveUpToJavaLangObject.java",
+    "import $PackageName.*;
+    public class Test_MoveUpToJavaLangObject {
+        public static void main(String[] args) {
+            MoveUpToJavaLangObject X = new MoveUpToJavaLangObject();
+            int R = X.hashCode();
+        }
+    }");
+    
+    # Removed_Method (Deprecated)
+    writeFile($Path_v1."/RemovedDeprecatedMethod.java",
+    "package $PackageName;
+    public class RemovedDeprecatedMethod {
+        public Integer field = 100;
+        public Integer otherMethod(Integer param) { return param; }
+        \@Deprecated
+        public Integer removedMethod(Integer param1, String param2) { return param1; }
+    }");
+    writeFile($Path_v2."/RemovedDeprecatedMethod.java",
+    "package $PackageName;
+    public class RemovedDeprecatedMethod {
+        public Integer field = 100;
+        public Integer otherMethod(Integer param) { return param; }
+    }");
+    
+    # Interface_Removed_Abstract_Method
+    writeFile($Path_v1."/InterfaceRemovedAbstractMethod.java",
+    "package $PackageName;
+    public interface InterfaceRemovedAbstractMethod extends BaseInterface, BaseInterface2 {
+        public void removedMethod(Integer param1, java.io.ObjectOutput param2);
+        public void someMethod(Integer param);
+    }");
+    writeFile($Path_v2."/InterfaceRemovedAbstractMethod.java",
+    "package $PackageName;
+    public interface InterfaceRemovedAbstractMethod extends BaseInterface, BaseInterface2 {
+        public void someMethod(Integer param);
+    }");
+    
+    # Interface_Added_Abstract_Method
+    writeFile($Path_v1."/InterfaceAddedAbstractMethod.java",
+    "package $PackageName;
+    public interface InterfaceAddedAbstractMethod extends BaseInterface, BaseInterface2 {
+        public void someMethod(Integer param);
+    }");
+    writeFile($Path_v2."/InterfaceAddedAbstractMethod.java",
+    "package $PackageName;
+    public interface InterfaceAddedAbstractMethod extends BaseInterface, BaseInterface2 {
+        public void someMethod(Integer param);
+        public Integer addedMethod(Integer param);
+    }");
+    
+    # Interface_Added_Default_Method
+    writeFile($Path_v1."/InterfaceAddedDefaultMethod.java",
+    "package $PackageName;
+    public interface InterfaceAddedDefaultMethod {
+        public void someMethod(Integer param);
+    }");
+    writeFile($Path_v2."/InterfaceAddedDefaultMethod.java",
+    "package $PackageName;
+    public interface InterfaceAddedDefaultMethod {
+        public void someMethod(Integer param);
+        default Integer addedMethod(Integer param) { return 0; }
+    }");
+    
+    # Method_Became_NonDefault
+    writeFile($Path_v1."/MethodBecameNonDefault.java",
+    "package $PackageName;
+    public interface MethodBecameNonDefault {
+        default Integer someMethod(Integer param) { return 0; }
+    }");
+    writeFile($Path_v2."/MethodBecameNonDefault.java",
+    "package $PackageName;
+    public interface MethodBecameNonDefault {
+        public Integer someMethod(Integer param);
+    }");
+    
+    writeFile($TestsPath."/Test_MethodBecameNonDefault.java",
+    "import $PackageName.*;
+    class Class_MethodBecameNonDefault implements MethodBecameNonDefault {
+    };
+    
+    public class Test_MethodBecameNonDefault
+    {
+        public static void main(String[] args)
+        {
+            Class_MethodBecameNonDefault Obj = new Class_MethodBecameNonDefault();
+            Integer Res = Obj.someMethod(0);
+        }
+    }");
+    
+    # Variable_Arity_To_Array
+    writeFile($Path_v1."/VariableArityToArray.java",
+    "package $PackageName;
+    public class VariableArityToArray {
+        public void someMethod(Integer x, String... y) { };
+    }");
+    writeFile($Path_v2."/VariableArityToArray.java",
+    "package $PackageName;
+    public class VariableArityToArray {
+        public void someMethod(Integer x, String[] y) { };
+    }");
+    
+    # Class_Became_Interface
+    writeFile($Path_v1."/ClassBecameInterface.java",
+    "package $PackageName;
+    public class ClassBecameInterface extends BaseClass {
+        public Integer someMethod(Integer param) {
+            return param;
+        }
+    }");
+    writeFile($Path_v2."/ClassBecameInterface.java",
+    "package $PackageName;
+    public interface ClassBecameInterface extends BaseInterface, BaseInterface2 {
+        public Integer someMethod(Integer param);
+    }");
+    
+    # Added_Super_Class
+    writeFile($Path_v1."/AddedSuperClass.java",
+    "package $PackageName;
+    public class AddedSuperClass {
+        public Integer someMethod(Integer param) {
+            return param;
+        }
+    }");
+    writeFile($Path_v2."/AddedSuperClass.java",
+    "package $PackageName;
+    public class AddedSuperClass extends BaseClass {
+        public Integer someMethod(Integer param) {
+            return param;
+        }
+    }");
+    
+    # Abstract_Class_Added_Super_Abstract_Class
+    writeFile($Path_v1."/AbstractClassAddedSuperAbstractClass.java",
+    "package $PackageName;
+    public abstract class AbstractClassAddedSuperAbstractClass {
+        public Integer someMethod(Integer param) {
+            return param;
+        }
+    }");
+    writeFile($Path_v2."/AbstractClassAddedSuperAbstractClass.java",
+    "package $PackageName;
+    public abstract class AbstractClassAddedSuperAbstractClass extends BaseAbstractClass {
+        public Integer someMethod(Integer param) {
+            return param;
+        }
+    }");
+    
+    # Removed_Super_Class
+    writeFile($Path_v1."/RemovedSuperClass.java",
+    "package $PackageName;
+    public class RemovedSuperClass extends BaseClass {
+        public Integer someMethod(Integer param) {
+            return param;
+        }
+    }");
+    writeFile($Path_v2."/RemovedSuperClass.java",
+    "package $PackageName;
+    public class RemovedSuperClass {
+        public Integer someMethod(Integer param) {
+            return param;
+        }
+    }");
+    
+    # Changed_Super_Class
+    writeFile($Path_v1."/ChangedSuperClass.java",
+    "package $PackageName;
+    public class ChangedSuperClass extends BaseClass {
+        public Integer someMethod(Integer param) {
+            return param;
+        }
+    }");
+    writeFile($Path_v2."/ChangedSuperClass.java",
+    "package $PackageName;
+    public class ChangedSuperClass extends BaseClass2 {
+        public Integer someMethod(Integer param) {
+            return param;
+        }
+    }");
+    
+    # Abstract_Class_Added_Super_Interface
+    writeFile($Path_v1."/AbstractClassAddedSuperInterface.java",
+    "package $PackageName;
+    public abstract class AbstractClassAddedSuperInterface implements BaseInterface {
+        public Integer method(Integer param) {
+            return param;
+        }
+    }");
+    writeFile($Path_v2."/AbstractClassAddedSuperInterface.java",
+    "package $PackageName;
+    public abstract class AbstractClassAddedSuperInterface implements BaseInterface, BaseInterface2 {
+        public Integer method(Integer param) {
+            return param;
+        }
+    }");
+    
+    # Abstract_Class_Added_Super_Interface_With_Implemented_Methods
+    writeFile($Path_v1."/AbstractClassAddedSuperInterfaceWithImplementedMethods.java",
+    "package $PackageName;
+    public abstract class AbstractClassAddedSuperInterfaceWithImplementedMethods implements BaseInterface {
+        public Integer method(Integer param) {
+            return param;
+        }
+        public Integer method2(Integer param) {
+            return param;
+        }
+    }");
+    writeFile($Path_v2."/AbstractClassAddedSuperInterfaceWithImplementedMethods.java",
+    "package $PackageName;
+    public abstract class AbstractClassAddedSuperInterfaceWithImplementedMethods implements BaseInterface, BaseInterface2 {
+        public Integer method(Integer param) {
+            return param;
+        }
+        public Integer method2(Integer param) {
+            return param;
+        }
+    }");
+    
+    # Class_Removed_Super_Interface
+    writeFile($Path_v1."/ClassRemovedSuperInterface.java",
+    "package $PackageName;
+    public class ClassRemovedSuperInterface implements BaseInterface, BaseInterface2 {
+        public Integer method(Integer param) {
+            return param;
+        }
+        public Integer method2(Integer param) {
+            return param;
+        }
+    }");
+    writeFile($Path_v2."/ClassRemovedSuperInterface.java",
+    "package $PackageName;
+    public class ClassRemovedSuperInterface implements BaseInterface {
+        public Integer method(Integer param) {
+            return param;
+        }
+        public Integer method2(Integer param) {
+            return param;
+        }
+    }");
+    
+    writeFile($TestsPath."/Test_ClassRemovedSuperInterface.java",
+    "import $PackageName.*;
+    public class Test_ClassRemovedSuperInterface
+    {
+        public static void main(String[] args)
+        {
+            ClassRemovedSuperInterface Obj = new ClassRemovedSuperInterface();
+            Integer Res = Obj.method2(0);
+        }
+    }");
+    
+    # Interface_Added_Super_Interface
+    writeFile($Path_v1."/InterfaceAddedSuperInterface.java",
+    "package $PackageName;
+    public interface InterfaceAddedSuperInterface extends BaseInterface {
+        public Integer someMethod(Integer param);
+    }");
+    writeFile($Path_v2."/InterfaceAddedSuperInterface.java",
+    "package $PackageName;
+    public interface InterfaceAddedSuperInterface extends BaseInterface, BaseInterface2 {
+        public Integer someMethod(Integer param);
+    }");
+    
+    # Interface_Added_Super_Constant_Interface
+    writeFile($Path_v1."/InterfaceAddedSuperConstantInterface.java",
+    "package $PackageName;
+    public interface InterfaceAddedSuperConstantInterface extends BaseInterface {
+        public Integer someMethod(Integer param);
+    }");
+    writeFile($Path_v2."/InterfaceAddedSuperConstantInterface.java",
+    "package $PackageName;
+    public interface InterfaceAddedSuperConstantInterface extends BaseInterface, BaseConstantInterface {
+        public Integer someMethod(Integer param);
+    }");
+    
+    # Interface_Removed_Super_Interface
+    writeFile($Path_v1."/InterfaceRemovedSuperInterface.java",
+    "package $PackageName;
+    public interface InterfaceRemovedSuperInterface extends BaseInterface, BaseInterface2 {
+        public Integer someMethod(Integer param);
+    }");
+    writeFile($Path_v2."/InterfaceRemovedSuperInterface.java",
+    "package $PackageName;
+    public interface InterfaceRemovedSuperInterface extends BaseInterface {
+        public Integer someMethod(Integer param);
+    }");
+    
+    # Interface_Removed_Super_Constant_Interface
+    writeFile($Path_v1."/InterfaceRemovedSuperConstantInterface.java",
+    "package $PackageName;
+    public interface InterfaceRemovedSuperConstantInterface extends BaseInterface, BaseConstantInterface {
+        public Integer someMethod(Integer param);
+    }");
+    writeFile($Path_v2."/InterfaceRemovedSuperConstantInterface.java",
+    "package $PackageName;
+    public interface InterfaceRemovedSuperConstantInterface extends BaseInterface {
+        public Integer someMethod(Integer param);
+    }");
+    
+    # Interface_Became_Class
+    writeFile($Path_v1."/InterfaceBecameClass.java",
+    "package $PackageName;
+    public interface InterfaceBecameClass extends BaseInterface, BaseInterface2 {
+        public Integer someMethod(Integer param);
+    }");
+    writeFile($Path_v2."/InterfaceBecameClass.java",
+    "package $PackageName;
+    public class InterfaceBecameClass extends BaseClass {
+        public Integer someMethod(Integer param) {
+            return param;
+        }
+    }");
+    
+    # Removed_Class
+    writeFile($Path_v1."/RemovedClass.java",
+    "package $PackageName;
+    public class RemovedClass extends BaseClass {
+        public Integer someMethod(Integer param){
+            return param;
+        }
+    }");
+    
+    # Removed_Class (w/o methods)
+    writeFile($Path_v1."/RemovedFieldClass.java",
+    "package $PackageName;
+    public class RemovedFieldClass {
+        public Integer field;
+    }");
+    
+    writeFile($TestsPath."/Test_RemovedFieldClass.java",
+    "import $PackageName.*;
+    public class Test_RemovedFieldClass extends RemovedFieldClass
+    {
+        public static void main(String[] args)
+        {
+            RemovedFieldClass X = new RemovedFieldClass();
+            Integer Copy = X.field;
+        }
+    }");
+    
+    # Removed_Class (with static fields, private constructor)
+    writeFile($Path_v1."/RemovedClassWithStaticField.java",
+    "package $PackageName;
+    public class RemovedClassWithStaticField
+    {
+        private RemovedClassWithStaticField(){}
+        public static Integer cnt = 0;
+    }");
+    
+    writeFile($TestsPath."/Test_RemovedClassWithStaticField.java",
+    "import $PackageName.*;
+    public class Test_RemovedClassWithStaticField
+    {
+        public static void main(String[] args)
+        {
+            Integer Copy = RemovedClassWithStaticField.cnt;
+        }
+    }");
+    
+    # Removed_Field (static field, private constructor)
+    writeFile($Path_v1."/RemovedStaticFieldFromClassWithPrivateCtor.java",
+    "package $PackageName;
+    public class RemovedStaticFieldFromClassWithPrivateCtor
+    {
+        private RemovedStaticFieldFromClassWithPrivateCtor(){}
+        public static Integer cnt = 0;
+    }");
+    
+    writeFile($Path_v2."/RemovedStaticFieldFromClassWithPrivateCtor.java",
+    "package $PackageName;
+    public class RemovedStaticFieldFromClassWithPrivateCtor
+    {
+        private RemovedStaticFieldFromClassWithPrivateCtor(){}
+    }");
+    
+    writeFile($TestsPath."/Test_RemovedStaticFieldFromClassWithPrivateCtor.java",
+    "import $PackageName.*;
+    public class Test_RemovedStaticFieldFromClassWithPrivateCtor
+    {
+        public static void main(String[] args)
+        {
+            Integer Copy = RemovedStaticFieldFromClassWithPrivateCtor.cnt;
+        }
+    }");
+    
+    # Removed_Constant_Field
+    writeFile($Path_v1."/ClassRemovedStaticConstantField.java",
+    "package $PackageName;
+    public class ClassRemovedStaticConstantField
+    {
+        public static int removedField_Int = 1000;
+        public static String removedField_Str = \"Value\";
+    }");
+    writeFile($Path_v2."/ClassRemovedStaticConstantField.java",
+    "package $PackageName;
+    public class ClassRemovedStaticConstantField {
+    }");
+    
+    writeFile($TestsPath."/Test_ClassRemovedStaticConstantField.java",
+    "import $PackageName.*;
+    public class Test_ClassRemovedStaticConstantField
+    {
+        public static void main(String[] args)
+        {
+            Integer Copy = ClassRemovedStaticConstantField.removedField_Int;
+        }
+    }");
+    
+    # Removed_Class (Deprecated)
+    writeFile($Path_v1."/RemovedDeprecatedClass.java",
+    "package $PackageName;
+    \@Deprecated
+    public class RemovedDeprecatedClass {
+        public Integer someMethod(Integer param){
+            return param;
+        }
+    }");
+    
+    # Removed_Interface
+    writeFile($Path_v1."/RemovedInterface.java",
+    "package $PackageName;
+    public interface RemovedInterface extends BaseInterface, BaseInterface2 {
+        public Integer someMethod(Integer param);
+    }");
+    
+    # NonAbstract_Class_Added_Abstract_Method
+    writeFile($Path_v1."/NonAbstractClassAddedAbstractMethod.java",
+    "package $PackageName;
+    public class NonAbstractClassAddedAbstractMethod {
+        public Integer someMethod(Integer param1, String[] param2) {
+            return param1;
+        };
+    }");
+    writeFile($Path_v2."/NonAbstractClassAddedAbstractMethod.java",
+    "package $PackageName;
+    public abstract class NonAbstractClassAddedAbstractMethod {
+        public Integer someMethod(Integer param1, String[] param2) {
+            return param1;
+        };
+        public abstract Integer addedMethod(Integer param);
+    }");
+    
+    # Abstract_Class_Added_Abstract_Method
+    writeFile($Path_v1."/AbstractClassAddedAbstractMethod.java",
+    "package $PackageName;
+    public abstract class AbstractClassAddedAbstractMethod {
+        public Integer someMethod(Integer param1, String[] param2) {
+            return param1;
+        };
+    }");
+    writeFile($Path_v2."/AbstractClassAddedAbstractMethod.java",
+    "package $PackageName;
+    public abstract class AbstractClassAddedAbstractMethod {
+        public Integer someMethod(Integer param1, String[] param2) {
+            return param1;
+        };
+        public abstract Integer addedMethod(Integer param);
+    }");
+    
+    # Class_Became_Abstract
+    writeFile($Path_v1."/ClassBecameAbstract.java",
+    "package $PackageName;
+    public class ClassBecameAbstract {
+        public Integer someMethod(Integer param1, String[] param2) {
+            return param1;
+        };
+    }");
+    writeFile($Path_v2."/ClassBecameAbstract.java",
+    "package $PackageName;
+    public abstract class ClassBecameAbstract {
+        public Integer someMethod(Integer param1, String[] param2) {
+            return param1;
+        };
+        public abstract Integer addedMethod(Integer param);
+    }");
+    
+    # Class_Became_Final
+    writeFile($Path_v1."/ClassBecameFinal.java",
+    "package $PackageName;
+    public class ClassBecameFinal {
+        public Integer someMethod(Integer param1, String[] param2) {
+            return param1;
+        };
+    }");
+    writeFile($Path_v2."/ClassBecameFinal.java",
+    "package $PackageName;
+    public final class ClassBecameFinal {
+        public Integer someMethod(Integer param1, String[] param2) {
+            return param1;
+        };
+    }");
+    
+    # Class_Removed_Abstract_Method
+    writeFile($Path_v1."/ClassRemovedAbstractMethod.java",
+    "package $PackageName;
+    public abstract class ClassRemovedAbstractMethod {
+        public Integer someMethod(Integer param1, String[] param2) {
+            return param1;
+        };
+        public abstract Integer removedMethod(Integer param);
+    }");
+    writeFile($Path_v2."/ClassRemovedAbstractMethod.java",
+    "package $PackageName;
+    public abstract class ClassRemovedAbstractMethod {
+        public Integer someMethod(Integer param1, String[] param2) {
+            return param1;
+        };
+    }");
+    
+    # Class_Method_Became_Abstract
+    writeFile($Path_v1."/ClassMethodBecameAbstract.java",
+    "package $PackageName;
+    public abstract class ClassMethodBecameAbstract {
+        public Integer someMethod(Integer param1, String[] param2) {
+            return param1;
+        };
+        public Integer someMethod(Integer param){
+            return param;
+        };
+    }");
+    writeFile($Path_v2."/ClassMethodBecameAbstract.java",
+    "package $PackageName;
+    public abstract class ClassMethodBecameAbstract {
+        public Integer someMethod(Integer param1, String[] param2) {
+            return param1;
+        };
+        public abstract Integer someMethod(Integer param);
+    }");
+    
+    # Class_Method_Became_NonAbstract
+    writeFile($Path_v1."/ClassMethodBecameNonAbstract.java",
+    "package $PackageName;
+    public abstract class ClassMethodBecameNonAbstract {
+        public Integer someMethod(Integer param1, String[] param2) {
+            return param1;
+        };
+        public abstract Integer someMethod(Integer param);
+    }");
+    writeFile($Path_v2."/ClassMethodBecameNonAbstract.java",
+    "package $PackageName;
+    public abstract class ClassMethodBecameNonAbstract {
+        public Integer someMethod(Integer param1, String[] param2) {
+            return param1;
+        };
+        public Integer someMethod(Integer param){
+            return param;
+        };
+    }");
+    
+    # Method_Became_Static
+    writeFile($Path_v1."/MethodBecameStatic.java",
+    "package $PackageName;
+    public class MethodBecameStatic {
+        public Integer someMethod(Integer param) {
+            return param;
+        };
+    }");
+    writeFile($Path_v2."/MethodBecameStatic.java",
+    "package $PackageName;
+    public class MethodBecameStatic {
+        public static Integer someMethod(Integer param) {
+            return param;
+        };
+    }");
+    
+    # Method_Became_NonStatic
+    writeFile($Path_v1."/MethodBecameNonStatic.java",
+    "package $PackageName;
+    public class MethodBecameNonStatic {
+        public static Integer someMethod(Integer param) {
+            return param;
+        };
+    }");
+    writeFile($Path_v2."/MethodBecameNonStatic.java",
+    "package $PackageName;
+    public class MethodBecameNonStatic {
+        public Integer someMethod(Integer param) {
+            return param;
+        };
+    }");
+    
+    # Static_Method_Became_Final
+    writeFile($Path_v1."/StaticMethodBecameFinal.java",
+    "package $PackageName;
+    public class StaticMethodBecameFinal {
+        public static Integer someMethod(Integer param) {
+            return param;
+        };
+    }");
+    writeFile($Path_v2."/StaticMethodBecameFinal.java",
+    "package $PackageName;
+    public class StaticMethodBecameFinal {
+        public static final Integer someMethod(Integer param) {
+            return param;
+        };
+    }");
+    
+    # NonStatic_Method_Became_Final
+    writeFile($Path_v1."/NonStaticMethodBecameFinal.java",
+    "package $PackageName;
+    public class NonStaticMethodBecameFinal {
+        public Integer someMethod(Integer param) {
+            return param;
+        };
+    }");
+    writeFile($Path_v2."/NonStaticMethodBecameFinal.java",
+    "package $PackageName;
+    public class NonStaticMethodBecameFinal {
+        public final Integer someMethod(Integer param) {
+            return param;
+        };
+    }");
+    
+    # Method_Became_Abstract
+    writeFile($Path_v1."/MethodBecameAbstract.java",
+    "package $PackageName;
+    public abstract class MethodBecameAbstract {
+        public Integer someMethod(Integer param) {
+            return param;
+        };
+    }");
+    writeFile($Path_v2."/MethodBecameAbstract.java",
+    "package $PackageName;
+    public abstract class MethodBecameAbstract {
+        public abstract Integer someMethod(Integer param);
+    }");
+    
+    # Method_Became_NonAbstract
+    writeFile($Path_v1."/MethodBecameNonAbstract.java",
+    "package $PackageName;
+    public abstract class MethodBecameNonAbstract {
+        public abstract Integer someMethod(Integer param);
+    }");
+    writeFile($Path_v2."/MethodBecameNonAbstract.java",
+    "package $PackageName;
+    public abstract class MethodBecameNonAbstract {
+        public Integer someMethod(Integer param) {
+            return param;
+        };
+    }");
+    
+    # Changed_Method_Access
+    writeFile($Path_v1."/ChangedMethodAccess.java",
+    "package $PackageName;
+    public class ChangedMethodAccess {
+        public Integer someMethod(Integer param) {
+            return param;
+        };
+    }");
+    writeFile($Path_v2."/ChangedMethodAccess.java",
+    "package $PackageName;
+    public class ChangedMethodAccess {
+        protected Integer someMethod(Integer param) {
+            return param;
+        };
+    }");
+    
+    # Method_Became_Synchronized
+    writeFile($Path_v1."/MethodBecameSynchronized.java",
+    "package $PackageName;
+    public class MethodBecameSynchronized {
+        public Integer someMethod(Integer param) {
+            return param;
+        };
+    }");
+    writeFile($Path_v2."/MethodBecameSynchronized.java",
+    "package $PackageName;
+    public class MethodBecameSynchronized {
+        public synchronized Integer someMethod(Integer param) {
+            return param;
+        };
+    }");
+    
+    # Method_Became_NonSynchronized
+    writeFile($Path_v1."/MethodBecameNonSynchronized.java",
+    "package $PackageName;
+    public class MethodBecameNonSynchronized {
+        public synchronized Integer someMethod(Integer param) {
+            return param;
+        };
+    }");
+    writeFile($Path_v2."/MethodBecameNonSynchronized.java",
+    "package $PackageName;
+    public class MethodBecameNonSynchronized {
+        public Integer someMethod(Integer param) {
+            return param;
+        };
+    }");
+    
+    # Class_Overridden_Method
+    writeFile($Path_v1."/OverriddenMethod.java",
+    "package $PackageName;
+    public class OverriddenMethod extends BaseClass {
+        public Integer someMethod(Integer param) { return param; }
+    }");
+    writeFile($Path_v2."/OverriddenMethod.java",
+    "package $PackageName;
+    public class OverriddenMethod extends BaseClass {
+        public Integer someMethod(Integer param) { return param; }
+        public Integer method(Integer param) { return 2*param; }
+    }");
+    
+    # Class_Method_Moved_Up_Hierarchy
+    writeFile($Path_v1."/ClassMethodMovedUpHierarchy.java",
+    "package $PackageName;
+    public class ClassMethodMovedUpHierarchy extends BaseClass {
+        public Integer someMethod(Integer param) { return param; }
+        public Integer method(Integer param) { return 2*param; }
+    }");
+    writeFile($Path_v2."/ClassMethodMovedUpHierarchy.java",
+    "package $PackageName;
+    public class ClassMethodMovedUpHierarchy extends BaseClass {
+        public Integer someMethod(Integer param) { return param; }
+    }");
+    
+    # Class_Method_Moved_Up_Hierarchy (Interface Method) - should not be reported
+    writeFile($Path_v1."/InterfaceMethodMovedUpHierarchy.java",
+    "package $PackageName;
+    public interface InterfaceMethodMovedUpHierarchy extends BaseInterface {
+        public Integer method(Integer param);
+        public Integer method2(Integer param);
+    }");
+    writeFile($Path_v2."/InterfaceMethodMovedUpHierarchy.java",
+    "package $PackageName;
+    public interface InterfaceMethodMovedUpHierarchy extends BaseInterface {
+        public Integer method2(Integer param);
+    }");
+    
+    # Class_Method_Moved_Up_Hierarchy (Abstract Method) - should not be reported
+    writeFile($Path_v1."/AbstractMethodMovedUpHierarchy.java",
+    "package $PackageName;
+    public abstract class AbstractMethodMovedUpHierarchy implements BaseInterface {
+        public abstract Integer method(Integer param);
+        public abstract Integer method2(Integer param);
+    }");
+    writeFile($Path_v2."/AbstractMethodMovedUpHierarchy.java",
+    "package $PackageName;
+    public abstract class AbstractMethodMovedUpHierarchy implements BaseInterface {
+        public abstract Integer method2(Integer param);
+    }");
+    
+    # Use
+    writeFile($Path_v1."/Use.java",
+    "package $PackageName;
+    public class Use
+    {
+        public FieldBecameFinal field;
+        public void someMethod(FieldBecameFinal[] param) { };
+        public void someMethod(Use param) { };
+        public Integer someMethod(AbstractClassAddedSuperAbstractClass param) {
+            return 0;
+        }
+        public Integer someMethod(AbstractClassAddedAbstractMethod param) {
+            return 0;
+        }
+        public Integer someMethod(InterfaceAddedAbstractMethod param) {
+            return 0;
+        }
+        public Integer someMethod(InterfaceAddedSuperInterface param) {
+            return 0;
+        }
+        public Integer someMethod(AbstractClassAddedSuperInterface param) {
+            return 0;
+        }
+        public Integer someMethod(AbstractClassAddedSuperInterfaceWithImplementedMethods param) {
+            return 0;
+        }
+    }");
+    writeFile($Path_v2."/Use.java",
+    "package $PackageName;
+    public class Use
+    {
+        public FieldBecameFinal field;
+        public void someMethod(FieldBecameFinal[] param) { };
+        public void someMethod(Use param) { };
+        public Integer someMethod(AbstractClassAddedSuperAbstractClass param) {
+            return param.abstractMethod(100)+param.field;
+        }
+        public Integer someMethod(AbstractClassAddedAbstractMethod param) {
+            return param.addedMethod(100);
+        }
+        public Integer someMethod(InterfaceAddedAbstractMethod param) {
+            return param.addedMethod(100);
+        }
+        public Integer someMethod(InterfaceAddedSuperInterface param) {
+            return param.method2(100);
+        }
+        public Integer someMethod(AbstractClassAddedSuperInterface param) {
+            return param.method2(100);
+        }
+        public Integer someMethod(AbstractClassAddedSuperInterfaceWithImplementedMethods param) {
+            return param.method2(100);
+        }
+    }");
+    
+    # Added_Package
+    writeFile($Path_v2."/AddedPackage/AddedPackageClass.java",
+    "package $PackageName.AddedPackage;
+    public class AddedPackageClass {
+        public Integer field;
+        public void someMethod(Integer param) { };
+    }");
+    
+    # Removed_Package
+    writeFile($Path_v1."/RemovedPackage/RemovedPackageClass.java",
+    "package $PackageName.RemovedPackage;
+    public class RemovedPackageClass {
+        public Integer field;
+        public void someMethod(Integer param) { };
+    }");
+    my $BuildRoot1 = getDirname($Path_v1);
+    my $BuildRoot2 = getDirname($Path_v2);
+    if(compileJavaLib($LibName, $BuildRoot1, $BuildRoot2))
+    {
+        runTests($TestsPath, $PackageName, getAbsPath($BuildRoot1), getAbsPath($BuildRoot2));
+        runChecker($LibName, $BuildRoot1, $BuildRoot2);
+    }
+}
+
+sub checkJavaCompiler($)
+{ # check javac: compile simple program
+    my $Cmd = $_[0];
+    
+    if(not $Cmd) {
+        return;
+    }
+    
+    my $TmpDir = $In::Opt{"Tmp"};
+    
+    writeFile($TmpDir."/test_javac/Simple.java",
+    "public class Simple {
+        public Integer f;
+        public void method(Integer p) { };
+    }");
+    chdir($TmpDir."/test_javac");
+    system("$Cmd Simple.java 2>errors.txt");
+    chdir($In::Opt{"OrigDir"});
+    if($?)
+    {
+        my $Msg = "something is going wrong with the Java compiler (javac):\n";
+        my $Err = readFile($TmpDir."/test_javac/errors.txt");
+        $Msg .= $Err;
+        if($Err=~/elf\/start\.S/ and $Err=~/undefined\s+reference\s+to/)
+        { # /usr/lib/gcc/i586-suse-linux/4.5/../../../crt1.o: In function _start:
+          # /usr/src/packages/BUILD/glibc-2.11.3/csu/../sysdeps/i386/elf/start.S:115: undefined reference to main
+            $Msg .= "\nDid you install a JDK-devel package?";
+        }
+        exitStatus("Error", $Msg);
+    }
+}
+
+sub runTests($$$$)
+{
+    my ($TestsPath, $PackageName, $Path_v1, $Path_v2) = @_;
+    
+    # compile with old version of package
+    my $JavacCmd = getCmdPath("javac");
+    if(not $JavacCmd) {
+        exitStatus("Not_Found", "can't find \"javac\" compiler");
+    }
+    
+    my $JavaCmd = getCmdPath("java");
+    if(not $JavaCmd) {
+        exitStatus("Not_Found", "can't find \"java\" command");
+    }
+    
+    chdir($TestsPath);
+    system($JavacCmd." -classpath \"".$Path_v1."\" -g *.java");
+    chdir($In::Opt{"OrigDir"});
+    
+    foreach my $TestSrc (cmdFind($TestsPath, "", "*\\.java"))
+    { # remove test source
+        unlink($TestSrc);
+    }
+    
+    my $TEST_REPORT = "";
+    
+    foreach my $TestPath (cmdFind($TestsPath, "", "*\\.class", 1))
+    { # run tests
+        my $Name = getFilename($TestPath);
+        $Name=~s/\.class\Z//g;
+        
+        chdir($TestsPath);
+        system($JavaCmd." -classpath \"".join_A($Path_v2, ".")."\" $Name >result.txt 2>&1");
+        chdir($In::Opt{"OrigDir"});
+        
+        my $Result = readFile($TestsPath."/result.txt");
+        unlink($TestsPath."/result.txt");
+        $TEST_REPORT .= "TEST CASE: $Name\n";
+        if($Result) {
+            $TEST_REPORT .= "RESULT: FAILED\n";
+            $TEST_REPORT .= "OUTPUT:\n$Result\n";
+        }
+        else {
+            $TEST_REPORT .= "RESULT: SUCCESS\n";
+        }
+        $TEST_REPORT .= "\n";
+    }
+    
+    writeFile("$TestsPath/Journal.txt", $TEST_REPORT);
+}
+
+sub compileJavaLib($$$)
+{
+    my ($LibName, $BuildRoot1, $BuildRoot2) = @_;
+    
+    my $JavacCmd = getCmdPath("javac");
+    if(not $JavacCmd) {
+        exitStatus("Not_Found", "can't find \"javac\" compiler");
+    }
+    
+    checkJavaCompiler($JavacCmd);
+    
+    my $JarCmd = getCmdPath("jar");
+    if(not $JarCmd) {
+        exitStatus("Not_Found", "can't find \"jar\" command");
+    }
+    
+    # space before value, new line
+    writeFile("$BuildRoot1/MANIFEST.MF", "Implementation-Version: 1.0\n");
+    writeFile("$BuildRoot2/MANIFEST.MF", "Implementation-Version: 2.0\n");
+    
+    my (%SrcDir1, %SrcDir2) = ();
+    foreach my $Path (cmdFind($BuildRoot1, "f", "*\\.java")) {
+        $SrcDir1{getDirname($Path)} = 1;
+    }
+    foreach my $Path (cmdFind($BuildRoot2, "f", "*\\.java")) {
+        $SrcDir2{getDirname($Path)} = 1;
+    }
+    # build classes v.1
+    foreach my $Dir (keys(%SrcDir1))
+    {
+        chdir($Dir);
+        system("$JavacCmd -g *.java");
+        chdir($In::Opt{"OrigDir"});
+        if($?) {
+            exitStatus("Error", "can't compile classes v.1");
+        }
+    }
+    # create java archive v.1
+    chdir($BuildRoot1);
+    system("$JarCmd -cmf MANIFEST.MF $LibName.jar TestPackage");
+    chdir($In::Opt{"OrigDir"});
+    
+    # build classes v.2
+    foreach my $Dir (keys(%SrcDir2))
+    {
+        chdir($Dir);
+        system("$JavacCmd -g *.java");
+        chdir($In::Opt{"OrigDir"});
+        if($?) {
+            exitStatus("Error", "can't compile classes v.2");
+        }
+    }
+    # create java archive v.2
+    chdir($BuildRoot2);
+    system("$JarCmd -cmf MANIFEST.MF $LibName.jar TestPackage");
+    chdir($In::Opt{"OrigDir"});
+    
+    foreach my $SrcPath (cmdFind($BuildRoot1, "", "*\\.java")) {
+        unlink($SrcPath);
+    }
+    foreach my $SrcPath (cmdFind($BuildRoot2, "", "*\\.java")) {
+        unlink($SrcPath);
+    }
+    return 1;
+}
+
+sub runChecker($$$)
+{
+    my ($LibName, $Path1, $Path2) = @_;
+    
+    writeFile("$LibName/v1.xml", "
+        <version>
+            1.0
+        </version>
+        <archives>
+            ".getAbsPath($Path1)."
+        </archives>\n");
+    
+    writeFile("$LibName/v2.xml", "
+        <version>
+            2.0
+        </version>
+        <archives>
+            ".getAbsPath($Path2)."
+        </archives>\n");
+    
+    my $Cmd = "perl $0 -l $LibName $LibName/v1.xml $LibName/v2.xml";
+    if($In::Opt{"Quick"}) {
+        $Cmd .= " -quick";
+    }
+    if(defined $In::Opt{"SkipDeprecated"}) {
+        $Cmd .= " -skip-deprecated";
+    }
+    if(defined $In::Opt{"OldStyle"}) {
+        $Cmd .= " -old-style";
+    }
+    
+    my $TmpDir = $In::Opt{"Tmp"};
+    
+    writeFile($TmpDir."/skip-annotations.list", "TestPackage.Beta");
+    $Cmd .= " -skip-annotations-list ".$TmpDir."/skip-annotations.list";
+    if($In::Opt{"Debug"})
+    {
+        $Cmd .= " -debug";
+        printMsg("INFO", "Executing $Cmd");
+    }
+    
+    my $Report = "compat_reports/$LibName/1.0_to_2.0/compat_report.html";
+    
+    if(-f $Report) {
+        unlink($Report);
+    }
+    
+    system($Cmd);
+    
+    if(not -f $Report) {
+        exitStatus("Error", "analysis has failed");
+    }
+    
+    # Binary
+    my $BReport = readAttributes($Report, 0);
+    my $NProblems = $BReport->{"type_problems_high"}+$BReport->{"type_problems_medium"};
+    $NProblems += $BReport->{"method_problems_high"}+$BReport->{"method_problems_medium"};
+    $NProblems += $BReport->{"removed"};
+    
+    # Source
+    my $SReport = readAttributes($Report, 1);
+    $NProblems += $SReport->{"type_problems_high"}+$SReport->{"type_problems_medium"};
+    $NProblems += $SReport->{"method_problems_high"}+$SReport->{"method_problems_medium"};
+    $NProblems += $SReport->{"removed"};
+    
+    if($NProblems>=100) {
+        printMsg("INFO", "Test result: SUCCESS ($NProblems breaks found)\n");
+    }
+    else {
+        printMsg("ERROR", "Test result: FAILED ($NProblems breaks found)\n");
+    }
+}
+
+return 1;
diff --git a/tools/japicc/modules/Internals/SysFiles.pm b/tools/japicc/modules/Internals/SysFiles.pm
new file mode 100644
index 0000000..113e587
--- /dev/null
+++ b/tools/japicc/modules/Internals/SysFiles.pm
@@ -0,0 +1,225 @@
+###########################################################################
+# A module to find system files
+#
+# Copyright (C) 2016-2017 Andrey Ponomarenko's ABI Laboratory
+#
+# Written by Andrey Ponomarenko
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License or the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# and the GNU Lesser General Public License along with this program.
+# If not, see <http://www.gnu.org/licenses/>.
+###########################################################################
+use strict;
+
+my %Cache;
+
+my %DefaultBinPaths;
+
+my %OS_AddPath=(
+"macos"=>{
+    "bin"=>{"/Developer/usr/bin"=>1}},
+"beos"=>{
+    "bin"=>{"/boot/common/bin"=>1,"/boot/system/bin"=>1,"/boot/develop/abi"=>1}}
+);
+
+sub getCmdPath($)
+{
+    my $Name = $_[0];
+    
+    if(defined $Cache{"getCmdPath"}{$Name}) {
+        return $Cache{"getCmdPath"}{$Name};
+    }
+    my $Path = searchCmd($Name);
+    if(not $Path and $In::Opt{"OS"} eq "windows")
+    { # search for *.exe file
+        $Path = searchCmd($Name.".exe");
+    }
+    if (not $Path) {
+        $Path = searchCmd_Path($Name);
+    }
+    if($Path=~/\s/) {
+        $Path = "\"".$Path."\"";
+    }
+    return ($Cache{"getCmdPath"}{$Name} = $Path);
+}
+
+sub searchCmd($)
+{
+    my $Name = $_[0];
+    
+    if(defined $Cache{"searchCmd"}{$Name}) {
+        return $Cache{"searchCmd"}{$Name};
+    }
+    if(my $JdkPath = $In::Opt{"JdkPath"})
+    {
+        if(-x $JdkPath."/".$Name) {
+            return ($Cache{"searchCmd"}{$Name} = $JdkPath."/".$Name);
+        }
+        
+        if(-x $JdkPath."/bin/".$Name) {
+            return ($Cache{"searchCmd"}{$Name} = $JdkPath."/bin/".$Name);
+        }
+    }
+    if(my $DefaultPath = getCmdPath_Default($Name)) {
+        return ($Cache{"searchCmd"}{$Name} = $DefaultPath);
+    }
+    return ($Cache{"searchCmd"}{$Name} = "");
+}
+
+sub searchCmd_Path($)
+{
+    my $Name = $_[0];
+    
+    if(defined $Cache{"searchCmd_Path"}{$Name}) {
+        return $Cache{"searchCmd_Path"}{$Name};
+    }
+    
+    if(defined $In::Opt{"SysPaths"}{"bin"})
+    {
+        foreach my $Path (sort {length($a)<=>length($b)} keys(%{$In::Opt{"SysPaths"}{"bin"}}))
+        {
+            if(-f $Path."/".$Name or -f $Path."/".$Name.".exe") {
+                return ($Cache{"searchCmd_Path"}{$Name} = join_P($Path,$Name));
+            }
+        }
+    }
+
+    return ($Cache{"searchCmd_Path"}{$Name} = "");
+}
+
+sub getCmdPath_Default($)
+{ # search in PATH
+    if(defined $Cache{"getCmdPath_Default"}{$_[0]}) {
+        return $Cache{"getCmdPath_Default"}{$_[0]};
+    }
+    return ($Cache{"getCmdPath_Default"}{$_[0]} = getCmdPath_Default_I($_[0]));
+}
+
+sub getCmdPath_Default_I($)
+{ # search in PATH
+    my $Name = $_[0];
+    
+    my $TmpDir = $In::Opt{"Tmp"};
+    
+    if($Name=~/find/)
+    { # special case: search for "find" utility
+        if(`find \"$TmpDir\" -maxdepth 0 2>\"$TmpDir/null\"`) {
+            return "find";
+        }
+    }
+    if(getVersion($Name)) {
+        return $Name;
+    }
+    if($In::Opt{"OS"} eq "windows")
+    {
+        if(`$Name /? 2>\"$TmpDir/null\"`) {
+            return $Name;
+        }
+    }
+    if($Name!~/which/)
+    {
+        if(my $WhichCmd = getCmdPath("which"))
+        {
+            if(`$WhichCmd $Name 2>\"$TmpDir/null\"`) {
+                return $Name;
+            }
+        }
+    }
+    foreach my $Path (sort {length($a)<=>length($b)} keys(%DefaultBinPaths))
+    {
+        if(-f $Path."/".$Name) {
+            return join_P($Path,$Name);
+        }
+    }
+    return "";
+}
+
+sub detectDefaultPaths($$)
+{
+    my ($Bin, $Java) = @_;
+    
+    if($Cache{"detectDefaultPaths"}{$Bin}{$Java})
+    { # enter once
+        return;
+    }
+    $Cache{"detectDefaultPaths"}{$Bin}{$Java} = 1;
+    
+    if(not keys(%{$In::Opt{"SysPaths"}}))
+    { # run once
+        foreach my $Type (keys(%{$OS_AddPath{$In::Opt{"OS"}}}))
+        { # additional search paths
+            foreach my $Path (keys(%{$OS_AddPath{$In::Opt{"OS"}}{$Type}}))
+            {
+                next if(not -d $Path);
+                $In::Opt{"SysPaths"}{$Type}{$Path} = $OS_AddPath{$In::Opt{"OS"}}{$Type}{$Path};
+            }
+        }
+        if($In::Opt{"OS"} ne "windows")
+        {
+            foreach my $Type ("include", "lib", "bin")
+            { # autodetecting system "devel" directories
+                foreach my $Path (cmdFind("/", "d", "*$Type*", 1)) {
+                    $In::Opt{"SysPaths"}{$Type}{$Path} = 1;
+                }
+                if(-d "/usr")
+                {
+                    foreach my $Path (cmdFind("/usr", "d", "*$Type*", 1)) {
+                        $In::Opt{"SysPaths"}{$Type}{$Path} = 1;
+                    }
+                }
+            }
+        }
+    }
+    
+    if($Bin)
+    {
+        detectBinDefaultPaths();
+        foreach my $Path (keys(%DefaultBinPaths)) {
+            $In::Opt{"SysPaths"}{"bin"}{$Path} = $DefaultBinPaths{$Path};
+        }
+    }
+    
+    if($Java)
+    {
+        if(my $JavacCmd = getCmdPath("javac"))
+        {
+            if(my $Ver = `$JavacCmd -version 2>&1`)
+            {
+                if($Ver=~/javac\s+(.+)/) {
+                    printMsg("INFO", "Using Java ".$1);
+                }
+            }
+        }
+    }
+}
+
+sub detectBinDefaultPaths()
+{
+    my $EnvPaths = $ENV{"PATH"};
+    if($In::Opt{"OS"} eq "beos") {
+        $EnvPaths .= ":".$ENV{"BETOOLS"};
+    }
+    elsif($In::Opt{"OS"} eq "windows"
+    and my $JHome = $ENV{"JAVA_HOME"}) {
+        $EnvPaths .= ";$JHome\\bin";
+    }
+    my $Sep = ($In::Opt{"OS"} eq "windows")?";":":|;";
+    foreach my $Path (sort {length($a)<=>length($b)} split(/$Sep/, $EnvPaths))
+    {
+        $Path=~s/[\/\\]+\Z//g;
+        if($Path) {
+            $DefaultBinPaths{$Path} = 1;
+        }
+    }
+}
+
+return 1;
diff --git a/tools/japicc/modules/Internals/TypeAttr.pm b/tools/japicc/modules/Internals/TypeAttr.pm
new file mode 100644
index 0000000..c8910b0
--- /dev/null
+++ b/tools/japicc/modules/Internals/TypeAttr.pm
@@ -0,0 +1,97 @@
+###########################################################################
+# A module to handle type attributes
+#
+# Copyright (C) 2016 Andrey Ponomarenko's ABI Laboratory
+#
+# Written by Andrey Ponomarenko
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License or the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# and the GNU Lesser General Public License along with this program.
+# If not, see <http://www.gnu.org/licenses/>.
+###########################################################################
+use strict;
+
+my %Cache;
+
+#Aliases
+my %TypeInfo = ();
+
+sub initAliases_TypeAttr($)
+{
+    my $LVer = $_[0];
+    
+    $TypeInfo{$LVer} = $In::API{$LVer}{"TypeInfo"};
+}
+
+sub getTypeName($$)
+{
+    my ($TypeId, $LVer) = @_;
+    return $TypeInfo{$LVer}{$TypeId}{"Name"};
+}
+
+sub getShortName($$)
+{
+    my ($TypeId, $LVer) = @_;
+    my $TypeName = $TypeInfo{$LVer}{$TypeId}{"Name"};
+    $TypeName=~s/\A.*\.//g;
+    return $TypeName;
+}
+
+sub getTypeType($$)
+{
+    my ($TypeId, $LVer) = @_;
+    return $TypeInfo{$LVer}{$TypeId}{"Type"};
+}
+
+sub getBaseType($$)
+{
+    my ($TypeId, $LVer) = @_;
+    
+    if(defined $Cache{"getBaseType"}{$TypeId}{$LVer}) {
+        return $Cache{"getBaseType"}{$TypeId}{$LVer};
+    }
+    if(not $TypeInfo{$LVer}{$TypeId}) {
+        return {};
+    }
+    my $Type = $TypeInfo{$LVer}{$TypeId};
+    if(not $Type->{"BaseType"}) {
+        return $Type;
+    }
+    $Type = getBaseType($Type->{"BaseType"}, $LVer);
+    return ($Cache{"getBaseType"}{$TypeId}{$LVer} = $Type);
+}
+
+sub getOneStepBaseType($$)
+{
+    my ($TypeId, $LVer) = @_;
+    
+    if(not $TypeInfo{$LVer}{$TypeId}) {
+        return {};
+    }
+    
+    my $Type = $TypeInfo{$LVer}{$TypeId};
+    if(not $Type->{"BaseType"}) {
+        return $Type;
+    }
+    return getType($Type->{"BaseType"}, $LVer);
+}
+
+sub getType($$)
+{
+    my ($TypeId, $LVer) = @_;
+    if(not $TypeId or not $TypeInfo{$LVer}{$TypeId}) {
+        return {};
+    }
+    return $TypeInfo{$LVer}{$TypeId};
+}
+
+return 1;
diff --git a/tools/japicc/modules/Internals/Utils.pm b/tools/japicc/modules/Internals/Utils.pm
new file mode 100644
index 0000000..6980d2b
--- /dev/null
+++ b/tools/japicc/modules/Internals/Utils.pm
@@ -0,0 +1,235 @@
+###########################################################################
+# A module with basic functions
+#
+# Copyright (C) 2016-2017 Andrey Ponomarenko's ABI Laboratory
+#
+# Written by Andrey Ponomarenko
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License or the GNU Lesser
+# General Public License as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# and the GNU Lesser General Public License along with this program.
+# If not, see <http://www.gnu.org/licenses/>.
+###########################################################################
+use strict;
+use POSIX;
+
+sub initAPI($)
+{
+    my $V = $_[0];
+    foreach my $K ("MethodInfo", "TypeInfo", "TName_Tid")
+    {
+        if(not defined $In::API{$V}{$K}) {
+            $In::API{$V}{$K} = {};
+        }
+    }
+}
+
+sub setTarget($)
+{
+    my $Target = $_[0];
+    
+    if($Target eq "default")
+    {
+        $Target = getOSgroup();
+        
+        $In::Opt{"OS"} = $Target;
+        $In::Opt{"Ar"} = getArExt($Target);
+    }
+    
+    $In::Opt{"Target"} = $Target;
+}
+
+sub getMaxLen()
+{
+    if($In::Opt{"OS"} eq "windows") {
+        return 8191;
+    }
+    
+    return undef;
+}
+
+sub getMaxArg()
+{
+    if($In::Opt{"OS"} eq "windows") {
+        return undef;
+    }
+    
+    # Linux
+    return POSIX::sysconf(POSIX::_SC_ARG_MAX);
+}
+
+sub divideArray($)
+{
+    my $ArrRef = $_[0];
+    
+    return () if($#{$ArrRef}==-1);
+    
+    my $LEN_MAX = getMaxLen();
+    my $ARG_MAX = getMaxArg();
+    
+    if(defined $ARG_MAX)
+    { # Linux
+        if($#{$ArrRef} < $ARG_MAX - 500) {
+            return $ArrRef;
+        }
+    }
+    
+    my @Res = ();
+    my $Sub = [];
+    my $Len = 0;
+    
+    foreach my $Pos (0 .. $#{$ArrRef})
+    {
+        my $Arg = $ArrRef->[$Pos];
+        my $Arg_L = length($Arg) + 1; # space
+        
+        my ($LenLimit, $ArgLimit) = (1, 1);
+        
+        if(defined $LEN_MAX) {
+            $LenLimit = ($Len < $LEN_MAX - 500);
+        }
+        
+        if(defined $ARG_MAX) {
+            $ArgLimit = ($#{$Sub} < $ARG_MAX - 500);
+        }
+        
+        if($LenLimit and $ArgLimit)
+        {
+            push(@{$Sub}, $Arg);
+            $Len += $Arg_L;
+        }
+        else
+        {
+            push(@Res, $Sub);
+            
+            $Sub = [$Arg];
+            $Len = $Arg_L;
+        }
+    }
+    
+    if($#{$Sub}!=-1) {
+        push(@Res, $Sub);
+    }
+    
+    return @Res;
+}
+
+sub cmdFind(@)
+{ # native "find" is much faster than File::Find (~6x)
+  # also the File::Find doesn't support --maxdepth N option
+  # so using the cross-platform wrapper for the native one
+    my ($Path, $Type, $Name, $MaxDepth, $UseRegex) = ();
+    
+    $Path = shift(@_);
+    if(@_) {
+        $Type = shift(@_);
+    }
+    if(@_) {
+        $Name = shift(@_);
+    }
+    if(@_) {
+        $MaxDepth = shift(@_);
+    }
+    if(@_) {
+        $UseRegex = shift(@_);
+    }
+    
+    my $TmpDir = $In::Opt{"Tmp"};
+    my $TmpFile = $TmpDir."/null";
+    
+    if($In::Opt{"OS"} eq "windows")
+    {
+        $Path = getAbsPath($Path);
+        my $Cmd = "cmd /C dir \"$Path\" /B /O";
+        if($MaxDepth!=1) {
+            $Cmd .= " /S";
+        }
+        if($Type eq "d") {
+            $Cmd .= " /AD";
+        }
+        elsif($Type eq "f") {
+            $Cmd .= " /A-D";
+        }
+        
+        my @Files = split(/\n/, qx/$Cmd/);
+        
+        if($Name)
+        {
+            if(not $UseRegex)
+            { # FIXME: how to search file names in MS shell?
+              # wildcard to regexp
+                $Name=~s/\*/.*/g;
+                $Name='\A'.$Name.'\Z';
+            }
+            @Files = grep { /$Name/i } @Files;
+        }
+        my @AbsPaths = ();
+        foreach my $File (@Files)
+        {
+            if(not isAbsPath($File)) {
+                $File = join_P($Path, $File);
+            }
+            if($Type eq "f" and not -f $File)
+            { # skip dirs
+                next;
+            }
+            push(@AbsPaths, $File);
+        }
+        if($Type eq "d") {
+            push(@AbsPaths, $Path);
+        }
+        return @AbsPaths;
+    }
+    else
+    {
+        my $FindCmd = "find";
+        if(not checkCmd($FindCmd)) {
+            exitStatus("Not_Found", "can't find a \"find\" command");
+        }
+        $Path = getAbsPath($Path);
+        if(-d $Path and -l $Path
+        and $Path!~/\/\Z/)
+        { # for directories that are symlinks
+            $Path.="/";
+        }
+        my $Cmd = $FindCmd." \"$Path\"";
+        if($MaxDepth) {
+            $Cmd .= " -maxdepth $MaxDepth";
+        }
+        if($Type) {
+            $Cmd .= " -type $Type";
+        }
+        if($Name and not $UseRegex)
+        { # wildcards
+            $Cmd .= " -name \"$Name\"";
+        }
+        my $Res = qx/$Cmd 2>"$TmpFile"/;
+        if($? and $!) {
+            printMsg("ERROR", "problem with \'find\' utility ($?): $!");
+        }
+        my @Files = split(/\n/, $Res);
+        if($Name and $UseRegex)
+        { # regex
+            @Files = grep { /$Name/ } @Files;
+        }
+        return @Files;
+    }
+}
+
+sub getVersion($)
+{
+    my $Cmd = $_[0];
+    my $TmpDir = $In::Opt{"Tmp"};
+    my $Ver = `$Cmd --version 2>\"$TmpDir/null\"`;
+    return $Ver;
+}
+
+return 1;
diff --git a/tools/japicc/modules/RulesBin.xml b/tools/japicc/modules/RulesBin.xml
new file mode 100644
index 0000000..30c583b
--- /dev/null
+++ b/tools/japicc/modules/RulesBin.xml
@@ -0,0 +1,1233 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rules version="1.0">
+
+<rule>
+    <id>
+        Method_Became_Static
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Method became static.
+    </change>
+    <effect>
+        A client program may be interrupted by **NoSuchMethodError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Method_Became_NonStatic
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Method became non-static.
+    </change>
+    <effect>
+        A client program may be interrupted by **NoSuchMethodError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Changed_Method_Return_From_Void
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Return value type has been changed from **void** to @new_value.
+    </change>
+    <effect>
+        This method has been removed because the return type is part of the method signature.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        NonStatic_Method_Became_Final
+    </id>
+    <severity>
+        Medium
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Method became final.
+    </change>
+    <effect>
+        A client program trying to reimplement this method may be interrupted by **VerifyError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Method_Became_Abstract
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Method became abstract.
+    </change>
+    <effect>
+        A client program trying to create an instance of the method's class may be interrupted by **InstantiationError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Method_Became_NonAbstract
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Method became non-abstract.
+    </change>
+    <effect>
+        A client program may change behavior.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Method_Became_Default
+    </id>
+    <severity>
+        Safe
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Method became default.
+    </change>
+    <effect>
+        No effect.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Method_Became_NonDefault
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Method became non-default.
+    </change>
+    <effect>
+        A client program trying to create an instance of a class may be interrupted by **AbstractMethodError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Method_Became_Synchronized
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Method became synchronized.
+    </change>
+    <effect>
+        A multi-threaded client program may change behavior.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Method_Became_NonSynchronized
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Method became non-synchronized.
+    </change>
+    <effect>
+        A multi-threaded client program may change behavior.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Changed_Method_Access
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Access level has been changed from @old_value to @new_value.
+    </change>
+    <effect>
+        A client program may be interrupted by **IllegalAccessError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        NonAbstract_Method_Added_Checked_Exception
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Added @target exception thrown.
+    </change>
+    <effect>
+        A client program may be interrupted by added exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        NonAbstract_Method_Removed_Checked_Exception
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Removed @target exception thrown.
+    </change>
+    <effect>
+        A client program may change behavior because the removed exception will not be thrown any more and client will not catch and handle it.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Added_Unchecked_Exception
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Added @target exception thrown.
+    </change>
+    <effect>
+        A client program may be interrupted by added exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Removed_Unchecked_Exception
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Removed @target exception thrown.
+    </change>
+    <effect>
+        A client program may change behavior because the removed exception will not be thrown any more and client will not catch and handle it.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Added_Method
+    </id>
+    <severity>
+        Safe
+    </severity>
+    <kind>
+        Methods
+    </kind>
+</rule>
+
+<rule>
+    <id>
+        Removed_Method
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Methods
+    </kind>
+</rule>
+
+<rule>
+    <id>
+        Variable_Arity_To_Array
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Methods
+    </kind>
+</rule>
+
+<rule>
+    <id>
+        NonAbstract_Class_Added_Abstract_Method
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Abstract method @target has been added to this class.
+    </change>
+    <effect>
+        This class became abstract and a client program may be interrupted by **InstantiationError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Abstract_Class_Added_Abstract_Method
+    </id>
+    <severity>
+        Safe
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Abstract method @target has been added to this class.
+    </change>
+    <effect>
+        No effect.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Abstract_Class_Added_Abstract_Method_Invoked_By_Others
+    </id>
+    <severity>
+        Medium
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Abstract method @target has been added to this class.
+    </change>
+    <effect>
+        A client program may be interrupted by **AbstractMethodError** exception. Added abstract method is called in 2nd library version by the method @invoked_by and may not be implemented by old clients.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Class_Removed_Abstract_Method
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Abstract method @target has been removed from this class.
+    </change>
+    <effect>
+        A client program may be interrupted by **NoSuchMethodError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Removed_Abstract_Method
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Abstract method @target has been removed from this interface.
+    </change>
+    <effect>
+        A client program may be interrupted by **NoSuchMethodError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Added_Abstract_Method
+    </id>
+    <severity>
+        Safe
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Abstract method @target has been added to this interface.
+    </change>
+    <effect>
+        No effect.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Added_Abstract_Method_Invoked_By_Others
+    </id>
+    <severity>
+        Medium
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Abstract method @target has been added to this interface.
+    </change>
+    <effect>
+        A client program may be interrupted by **AbstractMethodError** exception. Added abstract method is called in 2nd library version by the method @invoked_by and may not be implemented by old clients.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Class_Method_Became_Abstract
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Method @target became abstract.
+    </change>
+    <effect>
+        A client program may be interrupted by **InstantiationError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Class_Method_Became_NonAbstract
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Abstract method @target became non-abstract.
+    </change>
+    <effect>
+        Some methods in this class may change behavior.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Method_Became_NonDefault
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Method @target became non-default.
+    </change>
+    <effect>
+        A client program may be interrupted by **AbstractMethodError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Method_Became_Default
+    </id>
+    <severity>
+        Safe
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Method @target became default.
+    </change>
+    <effect>
+        No effect.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Class_Overridden_Method
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Method @old_value has been overridden by @new_value.
+    </change>
+    <effect>
+        Method @new_value will be called instead of @old_value in a client program.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Class_Method_Moved_Up_Hierarchy
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Method @old_value has been moved up type hierarchy to @new_value.
+    </change>
+    <effect>
+        Method @new_value will be called instead of @old_value in a client program.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Abstract_Class_Added_Super_Interface
+    </id>
+    <severity>
+        Safe
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Added super-interface @target.
+    </change>
+    <effect>
+        No effect.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Abstract_Class_Added_Super_Interface_Invoked_By_Others
+    </id>
+    <severity>
+        Medium
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Added super-interface @target.
+    </change>
+    <effect>
+        If abstract methods from an added super-interface must be implemented by client then it may be interrupted by **AbstractMethodError** exception.
+        
+        NOTE: Abstract method @invoked from the added super-interface is called by the method @invoked_by in 2nd library version and may not be implemented by old clients.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Abstract_Class_Added_Super_Interface_With_Implemented_Methods
+    </id>
+    <severity>
+        Safe
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Added super-interface @target.
+    </change>
+    <effect>
+        No effect.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Added_Super_Interface
+    </id>
+    <severity>
+        Safe
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Added super-interface @target.
+    </change>
+    <effect>
+        No effect.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Added_Super_Interface_Used_By_Others
+    </id>
+    <severity>
+        Medium
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Added super-interface @target.
+    </change>
+    <effect>
+        If abstract methods from an added super-interface must be implemented by client then it may be interrupted by **AbstractMethodError** exception.
+        
+        NOTE: Abstract method @invoked from the added super-interface is called by the method @invoked_by in 2nd library version and may not be implemented by old clients.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Added_Super_Interface_With_Implemented_Methods
+    </id>
+    <severity>
+        Safe
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Added super-interface @target.
+    </change>
+    <effect>
+        No effect.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Added_Super_Constant_Interface
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Added super-interface @target containing constants only.
+    </change>
+    <effect>
+        A static field from a super-interface of a client class may hide a field (with the same name) inherited from a super-class and cause **IncompatibleClassChangeError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Removed_Super_Interface
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Removed super-interface @target.
+    </change>
+    <effect>
+        A client program may be interrupted by **NoSuchMethodError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Class_Removed_Super_Interface
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Removed super-interface @target.
+    </change>
+    <effect>
+        A client program may be interrupted by **NoSuchMethodError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Removed_Super_Constant_Interface
+    </id>
+    <severity>
+        Safe
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Removed super-interface @target containing constants only.
+    </change>
+    <effect>
+        No effect.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Added_Super_Class
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Added super-class @target.
+    </change>
+    <effect>
+        A static field from a super-interface of a client class may hide a field (with the same name) inherited from new super-class and cause **IncompatibleClassChangeError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Abstract_Class_Added_Super_Abstract_Class
+    </id>
+    <severity>
+        Safe
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Added abstract super-class @target.
+    </change>
+    <effect>
+        No effect.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Abstract_Class_Added_Super_Abstract_Class_Invoked_By_Others
+    </id>
+    <severity>
+        Medium
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Added abstract super-class @target.
+    </change>
+    <effect>
+        If abstract methods from an added super-class must be implemented by client then it may be interrupted by **AbstractMethodError** exception. Abstract method @invoked from the added abstract super-class is called by the method @invoked_by in 2nd library version and may not be implemented by old clients.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Removed_Super_Class
+    </id>
+    <severity>
+        Medium
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Removed super-class @target.
+    </change>
+    <effect>
+        Access of a client program to the fields or methods of the old super-class may be interrupted by **NoSuchFieldError** or **NoSuchMethodError** exceptions.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Changed_Super_Class
+    </id>
+    <severity>
+        Medium
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Superclass has been changed from @old_value to @new_value.
+    </change>
+    <effect>
+        1) Access of a client program to the fields or methods of the old super-class may be interrupted by **NoSuchFieldError** or **NoSuchMethodError** exceptions.
+        2) A static field from a super-interface of a client class may hide a field (with the same name) inherited from new super-class and cause **IncompatibleClassChangeError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Class_Added_Field
+    </id>
+    <severity>
+        Safe
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Field @target has been added to this class.
+    </change>
+    <effect>
+        No effect.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Class_Added_Field_Non_Safe
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Field @target has been added to this class.
+    </change>
+    <effect>
+        NOTE: A static field from a super-interface of a client class may hide an added field (with the same name) inherited from the super-class of a client class and cause **IncompatibleClassChangeError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Added_Field
+    </id>
+    <severity>
+        Safe
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Field @target has been added to this interface.
+    </change>
+    <effect>
+        No effect.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Added_Field_Non_Safe
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Field @target has been added to this interface.
+    </change>
+    <effect>
+        NOTE: An added static field from a super-interface of a client class may hide a field (with the same name) inherited from the super-class of a client class and cause **IncompatibleClassChangeError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Renamed_Field
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Field @target has been renamed to @new_value.
+    </change>
+    <effect>
+        A client program may be interrupted by **NoSuchFieldError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Renamed_Constant_Field
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Field @target of type @field_type with the compile-time constant value @field_value has been renamed to @new_value.
+    </change>
+    <effect>
+        A client program may change behavior.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Removed_NonConstant_Field
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Field @target of type @field_type has been removed from this @type_type.
+    </change>
+    <effect>
+        A client program may be interrupted by **NoSuchFieldError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Removed_Constant_Field
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Field @target of type @field_type with the compile-time constant value @field_value has been removed from this @type_type.
+    </change>
+    <effect>
+        A client program may change behavior.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Changed_Field_Type
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Type of field @target has been changed from @old_value to @new_value.
+    </change>
+    <effect>
+        A client program may be interrupted by **NoSuchFieldError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Changed_Field_Access
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Access level of field @target has been changed from @old_value to @new_value.
+    </change>
+    <effect>
+        A client program may be interrupted by **IllegalAccessError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Changed_Field_Access_To_Package_Private
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Access level of field @target has been changed from @old_value to @new_value.
+    </change>
+    <effect>
+        A client program may be interrupted by **IllegalAccessError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Changed_Final_Field_Value
+    </id>
+    <severity>
+        Medium
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Value of final field @target of type @field_type has been changed from @old_value to @new_value.
+    </change>
+    <effect>
+        Old value of the field will be inlined to the client code at compile-time and will be used instead of a new one.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Changed_Final_Version_Field_Value
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Value of final field @target of type @field_type has been changed from @old_value to @new_value.
+    </change>
+    <effect>
+        Old value of the field will be inlined to the client code at compile-time and will be used instead of a new one.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Field_Became_Final
+    </id>
+    <severity>
+        Medium
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Field @target became final.
+    </change>
+    <effect>
+        A client program may be interrupted by **IllegalAccessError** exception when attempts to assign new value to the field.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Field_Became_NonFinal
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Field @target became non-final.
+    </change>
+    <effect>
+        Old value of the field will be inlined to the client code at compile-time and will be used instead of a new one.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        NonConstant_Field_Became_Static
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Non-final field @target became static.
+    </change>
+    <effect>
+        A client program may be interrupted by **IncompatibleClassChangeError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        NonConstant_Field_Became_NonStatic
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Non-constant field @target became non-static.
+    </change>
+    <effect>
+        A client program may be interrupted by **IncompatibleClassChangeError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Class_Became_Interface
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        This **class** became **interface**.
+    </change>
+    <effect>
+        A client program may be interrupted by **IncompatibleClassChangeError** or **InstantiationError** exception dependent on the usage of this class.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Became_Class
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        This **interface** became **class**.
+    </change>
+    <effect>
+        A client program may be interrupted by **IncompatibleClassChangeError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Class_Became_Final
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        This class became final.
+    </change>
+    <effect>
+        A client program may be interrupted by **VerifyError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Class_Became_Abstract
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        This class became abstract.
+    </change>
+    <effect>
+        A client program may be interrupted by **InstantiationError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Removed_Class
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        This class has been removed.
+    </change>
+    <effect>
+        A client program may be interrupted by **NoClassDefFoundError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Removed_Interface
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        This interface has been removed.
+    </change>
+    <effect>
+        A client program may be interrupted by **NoClassDefFoundError** exception.
+    </effect>
+</rule>
+
+</rules>
diff --git a/tools/japicc/modules/RulesSrc.xml b/tools/japicc/modules/RulesSrc.xml
new file mode 100644
index 0000000..b49b47e
--- /dev/null
+++ b/tools/japicc/modules/RulesSrc.xml
@@ -0,0 +1,1109 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rules version="1.0">
+
+<rule>
+    <id>
+        Method_Became_Static
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Method became **static**.
+    </change>
+    <effect>
+        A client program may be interrupted by **NoSuchMethodError** exception.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Method_Became_NonStatic
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Method became non-static.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: non-static method @method_short cannot be referenced from a static context.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Static_Method_Became_Final
+    </id>
+    <severity>
+        Medium
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Method became final.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: @method_short in client class C cannot override @method_short in @class; overridden method is final.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        NonStatic_Method_Became_Final
+    </id>
+    <severity>
+        Medium
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Method became final.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: @method_short in client class C cannot override @method_short in @class; overridden method is final.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Method_Became_Abstract
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Method became abstract.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: A client class C is not abstract and does not override abstract method @method_short in @class.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Method_Became_NonAbstract
+    </id>
+    <severity>
+        Safe
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Method became non-abstract.
+    </change>
+    <effect>
+        No effect.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Method_Became_Default
+    </id>
+    <severity>
+        Safe
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Method became default.
+    </change>
+    <effect>
+        No effect.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Method_Became_NonDefault
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Method became non-default.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: A client class C is not abstract and does not override abstract method @method_short in @class.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Changed_Method_Access
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Access level has been changed from @old_value to @new_value.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: @method_short has @new_value access in @class.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Abstract_Method_Added_Checked_Exception
+    </id>
+    <severity>
+        Medium
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Added @target exception thrown.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: unreported exception @target must be caught or declared to be thrown.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        NonAbstract_Method_Added_Checked_Exception
+    </id>
+    <severity>
+        Medium
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Added @target exception thrown.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: unreported exception @target must be caught or declared to be thrown.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Abstract_Method_Removed_Checked_Exception
+    </id>
+    <severity>
+        Medium
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Removed @target exception thrown.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: cannot override @method_short in @class; overridden method does not throw @target.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        NonAbstract_Method_Removed_Checked_Exception
+    </id>
+    <severity>
+        Medium
+    </severity>
+    <kind>
+        Methods
+    </kind>
+    <change>
+        Removed @target exception thrown.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: cannot override @method_short in @class; overridden method does not throw @target.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Added_Method
+    </id>
+    <severity>
+        Safe
+    </severity>
+    <kind>
+        Methods
+    </kind>
+</rule>
+
+<rule>
+    <id>
+        Removed_Method
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Methods
+    </kind>
+</rule>
+
+<rule>
+    <id>
+        NonAbstract_Class_Added_Abstract_Method
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Abstract method @target has been added to this @type_type.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method @method_short in @class.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Abstract_Class_Added_Abstract_Method
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Abstract method @target has been added to this @type_type.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method @method_short in @class.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Abstract_Class_Added_Abstract_Method_Invoked_By_Others
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Abstract method @target has been added to this @type_type.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method @method_short in @class.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Class_Removed_Abstract_Method
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Abstract method @target has been removed from this @type_type.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: cannot find method @method_short in @type_type @class.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Removed_Abstract_Method
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Abstract method @target has been removed from this @type_type.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: cannot find method @method_short in @type_type @class.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Added_Abstract_Method
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Abstract method @target has been added to this @type_type.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method @method_short in @class.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Added_Abstract_Method_Invoked_By_Others
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Abstract method @target has been added to this @type_type.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method @method_short in @class.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Class_Method_Became_Abstract
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Method @target became abstract.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method @method_short in @class.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Class_Method_Became_NonAbstract
+    </id>
+    <severity>
+        Safe
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Abstract method @target became non-abstract.
+    </change>
+    <effect>
+        No effect.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Method_Became_NonDefault
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Method @target became non-default.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method @method_short in @class.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Method_Became_Default
+    </id>
+    <severity>
+        Safe
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Method @target became default.
+    </change>
+    <effect>
+        No effect.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Abstract_Class_Added_Super_Interface
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Added super-interface @target.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method in @target.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Abstract_Class_Added_Super_Interface_Invoked_By_Others
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Added super-interface @target.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method in @target.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Abstract_Class_Added_Super_Interface_With_Implemented_Methods
+    </id>
+    <severity>
+        Safe
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Added super-interface @target.
+    </change>
+    <effect>
+        No effect.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Added_Super_Interface
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Added super-interface @target.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method in @target.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Added_Super_Interface_Used_By_Others
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Added super-interface @target.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method in @target.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Added_Super_Interface_With_Implemented_Methods
+    </id>
+    <severity>
+        Safe
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Added super-interface @target.
+    </change>
+    <effect>
+        No effect.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Added_Super_Constant_Interface
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Added super-interface @target containing constants only.
+    </change>
+    <effect>
+        A static field from a super-interface of a client class may hide a field (with the same name) inherited from a super-class. Recompilation of a client class may be terminated with the message: reference to variable is ambiguous.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Removed_Super_Interface
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Removed super-interface @target.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: cannot find method in @type_type @type_name.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Class_Removed_Super_Interface
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Removed super-interface @target.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: cannot find method in @type_type @type_name.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Removed_Super_Constant_Interface
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Removed super-interface @target containing constants only.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: cannot find variable in interface @type_name.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Added_Super_Class
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Added super-class @target.
+    </change>
+    <effect>
+        A static field from a super-interface of a client class may hide a field (with the same name) inherited from new super-class. Recompilation of a client class may be terminated with the message: reference to variable is ambiguous.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Abstract_Class_Added_Super_Abstract_Class
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Added abstract super-class @target.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method in @target.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Abstract_Class_Added_Super_Abstract_Class_Invoked_By_Others
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Added abstract super-class @target.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: a client class C is not abstract and does not override abstract method in @target.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Removed_Super_Class
+    </id>
+    <severity>
+        Medium
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Removed super-class @target.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: cannot find variable (or method) in @type_name.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Changed_Super_Class
+    </id>
+    <severity>
+        Medium
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        Superclass has been changed from @old_value to @new_value.
+    </change>
+    <effect>
+        1) Recompilation of a client program may be terminated with the message: cannot find variable (or method) in @type_name.
+        2) A static field from a super-interface of a client class may hide a field (with the same name) inherited from new super-class. Recompilation of a client class may be terminated with the message: reference to variable is ambiguous.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Class_Added_Field
+    </id>
+    <severity>
+        Safe
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Field @target has been added to this class.
+    </change>
+    <effect>
+        No effect.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Class_Added_Field_Non_Safe
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Field @target has been added to this class.
+    </change>
+    <effect>
+        NOTE: A static field from a super-interface of a client class may hide an added field (with the same name) inherited from the super-class of a client class. Recompilation of a client class may be terminated with the message: reference to @target is ambiguous.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Added_Field
+    </id>
+    <severity>
+        Safe
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Field @target has been added to this interface.
+    </change>
+    <effect>
+        No effect.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Added_Field_Non_Safe
+    </id>
+    <severity>
+        Low
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Field @target has been added to this interface.
+    </change>
+    <effect>
+        NOTE: An added static field from a super-interface of a client class may hide a field (with the same name) inherited from the super-class of a client class. Recompilation of a client class may be terminated with the message: reference to @target is ambiguous.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Renamed_Field
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Field @target has been renamed to @new_value.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: cannot find variable @target in @type_name.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Renamed_Constant_Field
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Field @target has been renamed to @new_value.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: cannot find variable @target in @type_name.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Removed_NonConstant_Field
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Field @target of type @field_type has been removed from this @type_type.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: cannot find variable @target in @type_name.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Removed_Constant_Field
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Field @target of type @field_type with the compile-time constant value @field_value has been removed from this @type_type.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: cannot find variable @target in @type_name.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Changed_Field_Type
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Type of field @target has been changed from @old_value to @new_value.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: incompatible types, found: @old_value, required: @new_value.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Changed_Field_Access
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Access level of field @target has been changed from @old_value to @new_value.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: @target has @new_value access in @type_name.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Changed_Field_Access_To_Package_Private
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Access level of field @target has been changed from @old_value to @new_value.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: @target is not public in @type_name; cannot be accessed from outside package.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Field_Became_Final
+    </id>
+    <severity>
+        Medium
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Field @target became final.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: cannot assign a value to final variable @target.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        NonConstant_Field_Became_NonStatic
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Field @target became non-static.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: non-static variable @target cannot be referenced from a static context.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Constant_Field_Became_NonStatic
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Fields
+    </kind>
+    <change>
+        Field @target became non-static.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: non-static variable @target cannot be referenced from a static context.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Class_Became_Interface
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        This **class** became **interface**.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: @type_name is abstract; cannot be instantiated.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Interface_Became_Class
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        This **interface** became **class**.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: interface expected.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Class_Became_Final
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        This class became final.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: cannot inherit from final @type_name.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Class_Became_Abstract
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        This class became abstract.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: @type_name is abstract; cannot be instantiated.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Removed_Class
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        This class has been removed.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: cannot find class @type_name.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Removed_Interface
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        This interface has been removed.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the message: cannot find class @type_name.
+    </effect>
+</rule>
+
+<rule>
+    <id>
+        Removed_Annotation
+    </id>
+    <severity>
+        High
+    </severity>
+    <kind>
+        Types
+    </kind>
+    <change>
+        This annotation type has been removed.
+    </change>
+    <effect>
+        Recompilation of a client program may be terminated with the error message: cannot find symbol **@**@type_name.
+    </effect>
+</rule>
+
+</rules>
diff --git a/tools/pmd/designer.bat b/tools/pmd/designer.bat
new file mode 100644
index 0000000..c1cd497
--- /dev/null
+++ b/tools/pmd/designer.bat
@@ -0,0 +1,6 @@
+ at echo off
+set TOPDIR=%~dp0..
+set OPTS=
+set MAIN_CLASS=net.sourceforge.pmd.util.designer.Designer
+
+java -classpath %TOPDIR%\pmd\* %OPTS% %MAIN_CLASS% %*
diff --git a/tools/pmd/josm-ruleset.xml b/tools/pmd/josm-ruleset.xml
new file mode 100644
index 0000000..6201bf3
--- /dev/null
+++ b/tools/pmd/josm-ruleset.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<ruleset name="JOSM ruleset"
+    xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
+ 
+  <description>JOSM PMD ruleset</description>
+ 
+  <!-- <rule ref="rulesets/java/basic.xml"/>
+  <rule ref="rulesets/java/braces.xml"/>
+  <rule ref="rulesets/java/clone.xml"/>
+  <rule ref="rulesets/java/codesize.xml"/>
+  <rule ref="rulesets/java/comments.xml"/>
+  <rule ref="rulesets/java/design.xml"/>
+  <rule ref="rulesets/java/empty.xml"/>
+  <rule ref="rulesets/java/finalizers.xml"/>
+  <rule ref="rulesets/java/imports.xml"/>
+  <rule ref="rulesets/java/migrating.xml"/>
+  <rule ref="rulesets/java/naming.xml"/>
+  <rule ref="rulesets/java/optimizations.xml">
+  	<exclude name="LocalVariableCouldBeFinal"/>
+  	<exclude name="MethodArgumentCouldBeFinal"/>
+  </rule>-->
+  <rule ref="rulesets/java/strictexception.xml">
+  	<exclude name="ExceptionAsFlowControl"/>
+  	<exclude name="AvoidRethrowingException"/>
+  </rule>
+  <rule ref="rulesets/java/strings.xml">
+  	<exclude name="AvoidDuplicateLiterals"/>
+  	<exclude name="ConsecutiveLiteralAppends"/>
+  	<exclude name="AvoidStringBufferField"/>
+  	<exclude name="StringToString"/>
+  	<exclude name="UselessStringValueOf"/>
+  </rule>
+  <rule ref="rulesets/java/typeresolution.xml">
+  	<exclude name="LooseCoupling"/>
+  	<exclude name="SignatureDeclareThrowsException"/>
+  </rule>
+  <rule ref="rulesets/java/typeresolution.xml/SignatureDeclareThrowsException">
+    <properties>
+        <property name="violationSuppressXPath" value="//MethodDeclaration/../Annotation/MarkerAnnotation/Name[@Image='Override']"/>
+        <property name="IgnoreJUnitCompletely" value="true"/>
+    </properties>
+  </rule>
+  <rule ref="rulesets/java/unnecessary.xml">
+  	<exclude name="UselessParentheses"/>
+  	<exclude name="UselessOverridingMethod"/>
+  </rule>
+  <rule ref="rulesets/java/unusedcode.xml">
+  	<exclude name="UnusedFormalParameter"/>
+  </rule>
+  <rule ref="rulesets/java/unusedcode.xml/UnusedFormalParameter">
+    <properties>
+        <property name="violationSuppressXPath" value="//Annotation[MarkerAnnotation/Name/@Image='Deprecated']/..[MethodDeclaration|ConstructorDeclaration]"/>
+    </properties>
+  </rule>
+
+</ruleset>
\ No newline at end of file

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/josm.git



More information about the Pkg-grass-devel mailing list